Distributed Infrastructure

ABSTRACT

Novel tools and techniques for implementing distributed infrastructure are provided. In some techniques, a plurality of user devices, each at a customer premises, can provide video calling services over a network. In some embodiments, each of one or more user devices might be established as a distributed infrastructure element for cloud computing, cloud-based application hosting, and/or cloud-based data storage. One or more software applications, customer data, and/or media content (collectively, “hosted content”) might be provided to the one or more user devices for hosting thereon. Resource usage information and/or network connectivity information might be collected for each user device, and suitability of a user device to host the hosted content might be determined based at least in part on the collected resource usage information and/or network connectivity information. One or more courses of action may be determined, and invoked, based on performance metrics of the user devices.

CROSS-REFERENCES TO RELATED APPLICATIONS

This application claims the benefit, under 35 U.S.C. §119(e), of thefollowing applications: provisional U.S. Patent Application No.61/877,928, filed Sep. 13, 2013 by Ahmed et al. and titled “MobilePresence Detection” (attorney docket no. 0414.12-PR, referred to hereinas the “'928 application”); provisional U.S. Patent Application No.61/874,903, filed Sep. 6, 2013 by Shoemake et al. and titled “VirtualWindow” (attorney docket no. 0414.11-PR, referred to herein as the “'903application”); provisional U.S. Patent Application No. 61/872,603, filedAug. 30, 2013 by Shoemake et al. and titled “Physical Presence andAdvertising” (attorney docket no. 0414.10-PR, referred to herein as the“'603 application”); provisional U.S. Patent Application No. 61/858,518,filed Jul. 25, 2013 by Shoemake et al. and titled “Video Calling andConferencing Advertising” (attorney docket no. 0414.08-PR, referred toherein as the “'518 application”); provisional U.S. Patent ApplicationNo. 61/759,621, filed Feb. 1, 2013 by Shoemake et al. and titled “VideoMail Capture, Processing and Distribution” (attorney docket no.0414.07-PR, referred to herein as the “'621 application”); andprovisional U.S. Patent Application No. 61/737,506, filed Dec. 14, 2012by Shoemake et al. and titled “Video Capture, Processing andDistribution System” (attorney docket no. 0414.06-PR, referred to hereinas the “'506 application”). This application may also be related to U.S.patent application Ser. No. ______, filed on a date even herewith byAhmed et al. and titled “Mobile Presence Detection” (attorney docket no.0414.12, referred to herein as the “Mobile Presence DetectionApplication”) and to U.S. patent application Ser. No. ______/______,filed on a date even herewith by Ahmed et al. and titled “Video Capture,Processing and Distribution” (attorney docket no. 0414.06).

The respective disclosures of these applications/patents (which thisdocument refers to collectively as the “Related Applications”) areincorporated herein by reference in their entirety for all purposes.

COPYRIGHT STATEMENT

A portion of the disclosure of this patent document contains materialthat is subject to copyright protection. The copyright owner has noobjection to the facsimile reproduction by anyone of the patent documentor the patent disclosure as it appears in the Patent and TrademarkOffice patent file or records, but otherwise reserves all copyrightrights whatsoever.

FIELD

The present disclosure relates, in general, to tools and techniques forestablishing, operating, and/or maintaining distributed infrastructurefor cloud computing, cloud-based application hosting, and/or cloud-baseddata storage, and more particularly to tools and techniques forestablishing, operating, and/or maintaining distributed infrastructurefor cloud computing, cloud-based application hosting, and/or cloud-baseddata storage using a plurality of user devices linked over a network.

BACKGROUND

The proliferation of capable user devices, pervasive communication, andincreased bandwidth has provided opportunity for many enhanced servicesfor users. One example is video calling. Once the domain of high-end,dedicated systems from vendors such as POLYCOM®, video calling hasbecome available to the average consumer at a reasonable cost. Forexample, the Biscotti™ device, available from Biscotti Inc., provides aninexpensive tool to allow video calling using a high-definitiontelevision and an Internet connection. Such devices present a powerfulplatform for various applications. Examples include, without limitation,video calling, instant messaging, presence detection, status updates,media streaming over the Internet, web content viewing, gaming, and DVRcapability. Another example of such value added services is theintroduction of online gaming. Rather than playing a game by him- orherself, a user now can play most games in a multiplayer mode, usingcommunication over the Internet or another network.

Enabling such services is a new class of user device, which generallyfeatures relatively high-end processing capability (which would havebeen unthinkable outside supercomputing labs just a few years ago),substantial random access memory, and relatively vast storagecapabilities, including hard drives, solid-state drives, and the like.Such user devices can include, without limitation, the video callingdevices mentioned above, the presence detection devices (“PDDs”)described in the Mobile Presence Detection Application various videogame consoles, and the like. Such devices generally have a reliable, andrelatively high-speed, connection to the Internet (to enable the valueadded services) and significant amounts of downtime, in which theprocessing and other capabilities of the devices are unused.

Historically, in the cloud computing space, infrastructure used forcloud computing and cloud storage has been hosted in large data centersthat contain many general purpose and/or special purpose computers.Similarly, hosted applications such as web hosting, e-mail hosting, filetransfer protocol (“FTP”) functionality, and/or other services aretypically hosted from a centralized data center. Such services mayrequire storage, computation, and network connectivity. Such servicesmay also include computational services. These services requireestablishing, operating, and maintaining such facilities, as well as thenetworking infrastructure required to implement distributed computing ordistributed data storage or the like, all of which may add to the costof the resultant cloud services. Further, hosting providers typicallyhost applications for many different entities from a small number oflocations, making the entire system susceptible to losses to asignificant portion of the services in the case that one or more of thenumber of locations experience system crashes, perhaps due to events,including, without limitation, sudden high demand, natural or man-madedisasters, local/regional power grid issues, and/or the like. Finally,Content Delivery Networks, which replicate and cache data closer to theusers, typically use a limited number of peering locations that cachecontent closer to users, which may result in data congestion—and thuslong data transmission times.

Hence, there is a need for more robust and scalable distributedinfrastructure solutions, and some such solutions can employ thepowerful user devices already resident in many users' homes.

BRIEF SUMMARY

A set of embodiments provides tools and techniques for establishing,operating, and/or maintaining, or otherwise implementing, distributedinfrastructure for cloud computing, cloud-based application hosting,and/or cloud-based data storage, e.g., by using a plurality of userdevices linked over a network.

Some embodiments can employ data processing, random access memory,sensor input, and/or data storage capacity inherent to advanced userdevices, which when connected to a network (for example, to providevideo calling services, multiplayer gaming, etc.), can be linked toserve as distributed infrastructure for cloud computing, cloud-basedapplication hosting, and/or cloud-based data storage. With each suchuser device installed within customer premises, existing networkingcomponents and equipment for the customer's Internet connectivity needsmay be used, with no additional networking infrastructure beingnecessary. Further, such user devices, in some embodiments, may below-profile, “plug-and-play” devices; as such, any costs (if any) forconnecting such user devices to the network (additional to existingnetwork connectivity at the customer premises) are minimal ornegligible, and the standardized platforms of such user devices providea reliable platform to ease in configuration and resource allocationamong the distributed infrastructure

As more and more such user devices are added to the network (i.e., asmore consumers purchase devices to participate in video callingservices, content delivery services, gaming services, and/or the like),the capacity of the distributed infrastructure may expand. With eachsuccessive version of the hardware for each type of user device,processing power and data storage capacity per device also increases.All combined, an ever expanding, low maintenance, low costimplementation of a distributed infrastructure may be established,operated, and/or maintained concurrent with the user devices' primaryfunction of enabling high-definition, plug-and-play video callingservices, contend delivery services, gaming services, and/or the like.

The tools provided by various embodiments include, without limitation,methods, systems, and/or software products. Merely by way of example, amethod might comprise one or more procedures, any or all of which areexecuted by a user device and/or a computer system. Correspondingly, anembodiment might provide a user device and/or a computer systemconfigured with instructions to perform one or more procedures inaccordance with methods provided by various other embodiments.Similarly, a computer program might comprise a set of instructions thatare executable by a user device and/or a computer system (and/or aprocessor therein) to perform such operations. In many cases, suchsoftware programs are encoded on physical, tangible, and/ornon-transitory computer readable media (such as, to name but a fewexamples, optical media, magnetic media, and/or the like).

In one aspect, a method might comprise communicatively coupling aplurality of user devices together in a network, each of the pluralityof user devices being located in one of a plurality of customerpremises. Each user device might comprise (but need not necessarilyinclude) a video input interface to receive video input from a localcontent source (which, in some embodiments, might include a set-top box(“STB”) and/or the like), an audio input interface to receive audioinput from the local content source, a video output interface to providevideo output to a video display device, an audio output interface toprovide audio output to an audio receiver, a video capture device tocapture at least one of image data or video data, an audio capturedevice to capture audio data, a network interface, at least oneprocessor, and a storage medium in communication with the at least oneprocessor. The method might further comprise establishing, with acomputer, one or more user devices of the plurality of user devices asdistributed infrastructure elements. In some instances, the method mightcomprise providing, with the computer, at least one of one or moresoftware applications, customer data, or media content to the one ormore user devices for hosting on the one or more user devices.

In some embodiments, each of the plurality of user devices might adhereto one of a limited number of classes of hardware. Each class ofhardware might have a known, common hardware configuration. In suchembodiments, the method might further comprise determining, with thecomputer, a class of each of the plurality of user devices, anddetermining, with the computer, capabilities of each user device, basedon the determined class of each user device. In some instances,providing the at least one of one or more software applications,customer data, or media content to the one or more user devices mightcomprise providing the least one of one or more software applications,customer data, or media content to the one or more user devices based atleast in part on the determined capabilities of each user device.

In some cases, the computer might be at least one of the plurality ofuser devices, and, in some instances, the computer might be at least oneof the one or more user devices that are established as distributedinfrastructure elements. Alternatively, or in addition, the computermight be a control server in communication with the plurality of userdevices over the network.

According to some embodiments, the method might further comprisedetermining, with the computer, a redundancy level for hosting each ofthe at least one of the one or more software applications, the customerdata, or the media content across the one or more user devices. In someinstances, providing the at least one of one or more softwareapplications, customer data, or media content to the one or more userdevices for hosting on the one or more user devices might compriseproviding, with the computer, the at least one of one or more softwareapplications, customer data, or media content to the one or more userdevices, based at least in part on the determined redundancy level forhosting each of the at least one of the one or more softwareapplications, the customer data, or the media content across the one ormore user devices.

In some embodiments, the method might further comprise collecting, withthe computer, resource usage information for each of the one or moreuser devices, and collecting, with the computer, network connectivityinformation for each of the one or more user devices. In some cases, themethod might comprise determining, with the computer, suitability ofeach of the one or more user devices to host the at least one of one ormore software applications, customer data, or media content, based atleast in part on one or more of the collected resource usage informationor the collected network connectivity information.

Merely by way of example, in some instances, the method might furthercomprise receiving, with the computer, user input from a user among aplurality of users indicating what type of software applications,customer data, or media content are permitted to be hosted on a userdevice owned by the user. The method might also comprise receiving, withthe computer, user input from the user indicating at least one of alevel of processing power or a level of storage on the user device ownedby the user that is permitted for hosting the indicated type of softwareapplications, customer data, or media content. In some instances, themethod might comprise labelling, with the computer, each of the one ormore user devices with at least one of a first label or a second label.The first label indicates type of distributed hosting, based on theindicated type of software applications, customer data, or mediacontent, while the second label indicates capacity of distributedhosting, based on the at least one of the indicated level of processingpower or the indicated level of storage. According to some embodiments,the method might further comprise determining, with the computer,suitability of each of the one or more user devices to host the at leastone of one or more software applications, customer data, or mediacontent, based at least in part on one or more of the first label or thesecond label. In some cases, providing the at least one of one or moresoftware applications, customer data, or media content to the one ormore user devices for hosting on the one or more user devices mightcomprise providing, with the computer, the at least one of one or moresoftware applications, customer data, or media content to the one ormore user devices, based at least in part on at least one of the firstlabel, the second label, or the determined suitability of each of theone or more user devices to host the at least one of one or moresoftware applications, customer data, or media content.

In some embodiments, establishing the one or more user devices of theplurality of user devices as distributed infrastructure elements mightcomprise installing, with the computer, software on at least two userdevices of the one or more user devices to enable distributed processingof software applications across the at least two user devices. In someinstances, establishing the one or more user devices of the plurality ofuser devices as distributed infrastructure elements might compriseinstalling, with the computer, software on at least two user devices ofthe one or more user devices to enable hosting of software applicationsacross the at least two user devices. In alternative, or additional,embodiments, establishing the one or more user devices of the pluralityof user devices as distributed infrastructure elements might compriseinstalling, with the computer, software on at least two user devices ofthe one or more user devices to enable distributed storage of one ormore of customer data or media content across the at least two userdevices.

In some instances, providing the at least one of one or more softwareapplications, customer data, or media content to the one or more userdevices for hosting on the one or more user devices might compriseproviding, with the computer, mirrored copies of the at least one of oneor more software applications, customer data, or media content to eachof at least two user devices of the one or more user devices.Alternatively, or in addition, providing the at least one of one or moresoftware applications, customer data, or media content to the one ormore user devices for hosting on the one or more user devices mightcomprise providing, with the computer, portions of each of the at leastone of one or more software applications, customer data, or mediacontent to each of at least two user devices of the one or more userdevices.

According to some aspects, the method might further comprise monitoring,with the computer, one or more of performance of at least one userdevice of the one or more user devices, or performance of thedistributed infrastructure elements, as a whole. In some cases, themethod might comprise determining, with the computer, one or morecourses of action to invoke, based at least in part on one or more ofperformance metrics of the at least one user device, or performancemetrics of the distributed infrastructure elements, as a whole. Themethod might further comprise invoking, with the computer, the one ormore courses of action, based on said determination.

In some embodiments, the method might further comprise monitoring, withthe computer, usage of a user device owned by a user, among the one ormore user devices, as a distributed infrastructure element, over a firstperiod. The method might also comprise determining, with the computer,compensation to the user for use of the user device owned by the user asa distributed infrastructure element, over the first period.

In another aspect, a user device among a plurality of user devices mightcomprise a video input interface to receive video input from a localcontent source, an audio input interface to receive audio input from thelocal content source, a video output interface to provide video outputto a video display device, an audio output interface to provide audiooutput to an audio receiver, a video capture device to capture at leastone of image data or video data, an audio capture device to captureaudio data, a network interface, at least one processor, and/or astorage medium in communication with the at least one processor. Thenetwork interface might, in some instances, be configured to communicatewith at least one other user device among the one or more user devicesover a network. The storage medium might have encoded thereon a set ofinstructions executable by the at least one processor to controloperation of the user device.

The set of instructions might comprise instructions to establish one ormore other user devices of the plurality of user devices as distributedinfrastructure elements. The set of instructions might further compriseinstructions to provide at least one of one or more softwareapplications, customer data, or media content to the one or more otheruser devices for hosting on the one or more other user devices.

In yet another aspect, a user device might comprise a video inputinterface to receive video input from a local content source, an audioinput interface to receive audio input from the local content source, avideo output interface to provide video output to a video displaydevice, an audio output interface to provide audio output to an audioreceiver, a video capture device to capture at least one of image dataor video data, an audio capture device to capture audio data, a networkinterface, at least one processor, and/or a storage medium incommunication with the at least one processor. The network interfacemight, in some instances, be configured to communicate with the computerand at least one other user device among one or more user devices over anetwork. The storage medium might have encoded thereon a set ofinstructions executable by the at least one processor to controloperation of the user device.

The set of instructions might comprise instructions to receive, from acomputer, instructions to reconfigure to become a distributedinfrastructure element of a distributed infrastructure, and instructionsto reconfigure into a distributed infrastructure element, based on theinstructions received from the computer. The set of instructions mightfurther comprise instructions to receive at least one of one or moresoftware applications, customer data, or media content provided from thecomputer, and instructions to host the at least one of one or moresoftware applications, customer data, or media content within thedistributed infrastructure.

In still another aspect, a system might comprise a computer, and one ormore user devices. The computer might comprise at least one firstprocessor and a first storage medium in communication with the at leastone first processor. The first storage medium might have encoded thereona first set of instructions executable by the at least one firstprocessor to control operation of the one or more user devices of aplurality of user devices. The first set of instructions might compriseinstructions to establish the one or more user devices as distributedinfrastructure elements, and instructions to provide at least one of oneor more software applications, customer data, or media content to theone or more user devices for hosting on the one or more user devices.

Each of the one or more user devices might comprise a video inputinterface to receive video input from a local content source, an audioinput interface to receive audio input from the local content source, avideo output interface to provide video output to a video displaydevice, an audio output interface to provide audio output to an audioreceiver, a video capture device to capture at least one of image dataor video data, an audio capture device to capture audio data, a networkinterface, at least one second processor, and/or a second storage mediumin communication with the at least one second processor. The networkinterface might, in some instances, be configured to communicate with atleast one of the computer over a network or at least one other userdevice among the one or more user devices over the network. The secondstorage medium might have encoded thereon a second set of instructionsexecutable by the at least one second processor to control operation ofthe user device.

The second set of instructions might comprise instructions to receive,from the computer, instructions to reconfigure to become a distributedinfrastructure element of a distributed infrastructure, and instructionsto reconfigure into a distributed infrastructure element, based on theinstructions received from the computer. The second set of instructionsmight further comprise instructions to receive the at least one of oneor more software applications, customer data, or media content providedfrom the computer, and instructions to host the at least one of one ormore software applications, customer data, or media content within thedistributed infrastructure.

In some cases, the computer might be at least one of the plurality ofuser devices, and, in some instances, the computer might be at least oneof the one or more user devices that are established as distributedinfrastructure elements. Alternatively, or in addition, the computermight be a control server in communication with the one or more userdevices over the network.

Various modifications and additions can be made to the embodimentsdiscussed without departing from the scope of the invention. Forexample, while the embodiments described above refer to particularfeatures, the scope of this invention also includes embodiments havingdifferent combination of features and embodiments that do not includeall of the above described features.

BRIEF DESCRIPTION OF THE DRAWINGS

A further understanding of the nature and advantages of particularembodiments may be realized by reference to the remaining portions ofthe specification and the drawings, in which like reference numerals areused to refer to similar components. In some instances, a sub-label isassociated with a reference numeral to denote one of multiple similarcomponents. When reference is made to a reference numeral withoutspecification to an existing sub-label, it is intended to refer to allsuch multiple similar components.

FIG. 1 is a block diagram illustrating a system for implementingdistributed infrastructure for cloud computing, cloud-based applicationhosting, and/or cloud-based data storage, in accordance with variousembodiments.

FIG. 2 is a process flow diagram illustrating a method of implementingdistributed infrastructure for cloud computing, cloud-based applicationhosting, and/or cloud-based data storage, in accordance with variousembodiments.

FIG. 3 is a block diagram illustrating another system for implementingdistributed infrastructure for cloud computing, cloud-based applicationhosting, and/or cloud-based data storage, in accordance with variousembodiments.

FIG. 4 is a generalized schematic diagram illustrating a computersystem, in accordance with various embodiments.

FIG. 5 is a block diagram illustrating a networked system of computers,which can be used in accordance with various embodiments.

DETAILED DESCRIPTION OF CERTAIN EMBODIMENTS

While various aspects and features of certain embodiments have beensummarized above, the following detailed description illustrates a fewexemplary embodiments in further detail to enable one of skill in theart to practice such embodiments. The described examples are providedfor illustrative purposes and are not intended to limit the scope of theinvention.

In the following description, for the purposes of explanation, numerousspecific details are set forth in order to provide a thoroughunderstanding of the described embodiments. It will be apparent to oneskilled in the art, however, that other embodiments of the presentinvention may be practiced without some of these specific details. Inother instances, certain structures and devices are shown in blockdiagram form. Several embodiments are described herein, and whilevarious features are ascribed to different embodiments, it should beappreciated that the features described with respect to one embodimentmay be incorporated with other embodiments as well. By the same token,however, no single feature or features of any described embodimentshould be considered essential to every embodiment of the invention, asother embodiments of the invention may omit such features.

Unless otherwise indicated, all numbers used herein to expressquantities, dimensions, and so forth used should be understood as beingmodified in all instances by the term “about.” In this application, theuse of the singular includes the plural unless specifically statedotherwise, and use of the terms “and” and “or” means “and/or” unlessotherwise indicated. Moreover, the use of the term “including,” as wellas other forms, such as “includes” and “included,” should be considerednon-exclusive. Also, terms such as “element” or “component” encompassboth elements and components comprising one unit and elements andcomponents that comprise more than one unit, unless specifically statedotherwise.

Features Provided By Various Embodiments

User devices provided by various embodiments can contain, inter alia,cameras, microphones, and/or other sensors (including, withoutlimitation, infrared (“IR”) sensors). These sensors, in conjunction withthe internal processing capability of the device, can allow the deviceto detect when a person is in the room. Additionally, through means suchas facial recognition and voice detection, or the like, the devices alsocan automatically recognize who is in the room. More specifically, suchdevices can detect the presence of a particular individual.

In various embodiments, each of a plurality of user devices cansimultaneously connect to a display device (e.g., a television (“TV”))and a local content source (which can include, without limitation, acable set-top box (“STB”), a satellite STB, an Internet Protocoltelevision (“IPTV”) STB, and/or the like) in a passthroughconfiguration. In other words, such a user device is locatedfunctionally inline between the display device and the local contentsource. When situated functionally inline between a local content sourceand a display device, the user device can receive an audiovisual streamoutput from the local content source, modify that audiovisual stream inaccordance with the methods described herein and in, e.g., U.S. patentapplication Ser. No. 12/561,165, filed Sep. 16, 2009 by Shoemake et al.and titled “Real Time Video Communications System” (issued as U.S. Pat.No. 8,144,182 and referred to herein as the “'182 patent,” thedisclosure of which is hereby incorporated herein by reference), andprovide the (perhaps modified) audiovisual stream as input to thedisplay device. In this manner, such a user device may function in asimilar manner as the video communication device (“VCD”) described indetail in the '182 patent.

User devices, in some instances, include a network connection (which maybe a wired or wireless connection), persistent local storage (including,without limitation, flash storage or hard drive storage, etc.), memory(e.g., working memory, random access memory (“RAM”), etc.), and one ormore processors or central processing units (“CPUs”). Some or all ofthese are key hardware components that can support infrastructureapplications such as cloud computing, hosting applications (includingweb, email, FTP and computational services), data/content storage,content delivery networks, and/or the like. User devices can be designedfor large-scale deployments, and in many cases reside in an end-user'sresidence or premises. The distribution of such a controlled platformallows for a provider to host distributed infrastructure applicationsacross the distributed network of user devices.

Merely by way of example, in some aspects, a virtual machine can be runon a user device. Access to this virtual machine can be provided to endusers. The virtual machine could host any operating system (including,but not limited to, Linux®, Windows®, MAC OS®, etc.). End users can loginto these virtual machines and use them as they would a cloud-basedserver. The connection to the virtual machine by the end user can bedirect (i.e., peer-to-peer) or relayed via a centralized computer (e.g.,a control server(s) or central server(s), etc.). Each user device couldhost one or more virtual machines (“VMs”), which may serve one or moreapplications, and may serve one or more end-users. The experience to anend-user is similar to that of using a cloud computing service provider.The main difference is that the infrastructure for the VM hosting is notcentralized in a datacenter but scattered across the distributed userdevices.

User devices, in some aspects, may be configured to hostapplications—including, without limitation, e-mail hosting, web hosting,hosting file transfer protocol (“FTP”) services, hosting computationalservices, and/or the like). User devices can host these services in asimilar manner as hosting of such services by traditional cloud-basedservice providers. Each user device can host one or more of theseservices serving one or more end-users. As with hosting the virtualmachine, the experience to an end-user is similar to that of using acloud hosting provider. The main difference is that the infrastructurefor the application hosting is not located in a datacenter but scatteredacross the distributed user devices.

In some embodiments, at least one user device (and in some cases, eachuser device) can be configured to be persistently connected to acentralized server(s) and/or to the network (regardless of whether ornot there is a centralized server(s)). This persistent connection can beused for communication related to management, control, and/or monitoringof the virtual machine and other hosted applications on the at least oneuser device.

In some cases, distributed storage may be provided to end-users usingone or more user devices as the storage medium. The experience to anend-user would be similar to that of using a cloud-based storageprovider. The main difference is that the storage infrastructure wouldbe the distributed user devices, rather than storage at a centralizeddatacenter. Additionally, the storage for a particular end-user may bespread across the local storage of one or more user devices. Errorcorrecting coding can be used for efficient redundancy and replicationof data across one or more user devices. Additionally, standardredundant array of independent disks (“RAID”) techniques can be used toreplicate data and/or encode data across multiple user devices,including, but not limited to, RAID0 through RAID9, hybrid or nestedRAID (e.g., RAID10, RAID 50, RAID100, etc.), etc. The varying levels ofredundancy across one or more user devices allow for probabilisticguarantees on the reliability of the storage that is provided to anend-user. For example, the more user devices an end-user's storage isspread across, the higher the reliability that can be guaranteed.

With regard to content delivery networks (“CDNs”), CDNs are often usedto efficiently serve data and handle peak user demand for data. Theyoperate by caching data that is in high demand at various locations inthe network, often closer to the end user. By distributing high demanddata, the load required to serve the data from a central server isreduced. In some embodiments, a content delivery network may be providedto end-users using one or more user devices as storage caches forcontent (e.g., media content, including, without limitation, videocontent, audio content, image content, video game content,user-generated content, software applications, and/or the like) that istraditionally served off a central server. When users request content,the content can be served from a user device rather than a centralizedserver, reducing the load on the centralized server. Data that is inhigh demand can be cached on more user devices, while data that is inless demand can be cached on fewer user devices.

Owners of user devices can be provided with a broad range of control asto how their user devices are used. For instance, owners of user devicesmight be given the ability to “opt-in” to permitting their user devicesto be used for distributed infrastructure purposes. Some owners ofdevices may not wish to have their devices used by others. This may bedue to privacy concerns, security concerns, and/or not wanting systemresources of their user devices (e.g., the CPU, memory, disk/storagecapacity, and/or the like) to be used by others. Herein, “disk,” “diskstorage,” “disk/storage,” “local disk,” and so on, might refer to anysuitable type of local data storage device, which may or may not utilizedisk-based data storage technologies; in some embodiments, these termsmight refer to non-volatile memory including, but not limited to, harddisks, floppy disks, magnetic tapes, optical discs, holographic memory,erasable programmable read-only memory (“EPROM”), electrically erasableprogrammable read-only memory (“EEPROM”), flash memory, magnetoresistiverandom access memory (“MRAM”), and/or the like. Owners of user devicesmay also be given the ability to “opt-in” to certain types ofinfrastructure being hosted from their devices. In some cases, ownersmay want certain types of infrastructure hosted, but not others. Theability to selectively opt-in gives them the capability to choose.

According to some embodiments, owners of user devices may be given theability to determine the amount of resources they would like to dedicateto distributed infrastructure. Merely by way of example, a device ownermay be willing to provide up to 50% of the device's CPU, 25% of itsmemory, 20% of its local storage, etc., for distributed infrastructurepurposes. In some instances, user device owners may be compensated forthe use of their device to provide distributed infrastructure. Thecompensation can be monetary or in other forms (e.g., rebates,discounts, access to other content and/or functionality, and/or thelike). Additionally, the compensation can be varied based on the type ofinfrastructure that is hosted on the owner's user device. For example,hosting a virtual machine for cloud computing could be valued at a firstlevel, while hosting an email domain valued at a second level differentfrom the first level. Further, the compensation can be varied based onthe amount of resources that a device owner is willing to provide. Forexample, a device owner could be compensated more if he or she iswilling to allow 20% of the local disk to be used for distributedinfrastructure rather than 10%.

In an aspect, the suitability of a particular user device to host one ormore distributed infrastructure applications may be measured. Thesuitability of the user device can include, without limitation, metricssuch as disk (or local storage) usage, memory usage, CPU usage, networkspeed, network latency, firewall conditions, amount of time the deviceis being used by the user device owner, etc. Further, the suitability ofthe device can also factor in the amount of resources the owner of thedevice is willing to provide for distributed infrastructure. Adistributed infrastructure application may be provisioned on a userdevice based on the suitability metric described above, and based on theapplication that is being provisioned. A centralized server, in someembodiments, can be used to facilitate the provisioning of a particularuser device, including downloading and installing the distributedapplication that the user device is hosting.

In some embodiments, the system can replicate and make one or morecopies of the distributed application that is being hosted on aparticular user device. A copy can be kept on a centralized server.Further, the copy can keep track of state information, such as theactual state of a virtual machine. The copy can be updated frequently,such that the central server has one or more snapshots of a particularapplication. The copy can serve as a backup in case of performanceissues, like device failure, network issues, power failure, etc. Thebackup can facilitate moving the hosted application from one user deviceto another. In some cases, the central server can be embodied as one ormore of the user devices.

Performance of a user device and of a distributed infrastructureapplication hosted on a user device may be monitored. This can beaccomplished via a side communication channel between the user deviceand a central server. Statistics such as CPU load, memory usage, diskusage, disk/storage read and write speed, network speed, network latencyboth for the system overall and for a particular hosted application canbe reported to the server. Actions or courses of action may betriggered, based on the performance metrics of user devices and theperformance metrics related to applications hosted on the devices.Actions can include moving a hosted application from one user device toanother when certain metrics call for such an action (for example if theCPU load is too high, and/or the disk/storage is too full, or the like).In some cases, based on usage of the user device by the device owner,the resources of the user device can be reduced in real-time. Thisprevents the user experience of the device owner from being compromisedby hosted distributed infrastructure applications. Actions that can betaken include, without limitation, reducing (to varying degrees, up toeliminating) the CPU load, disk/storage speed, network speed, and/orusage allowed by the hosted application(s). Additionally, anotherapproach might include adjusting the priority of the distributedinfrastructure application in real-time when the usage of the device bythe device owner is detected.

In some cases, traffic requests (e.g. hypertext transfer protocol(“HTTP”) requests) to user devices may be redirected. Such redirectionmay occur on a per request basis, based on factors such as the geographyof the requestor, or the like. The redirect need not be to the sameport, e.g., port 80 traffic may be redirected to not only a different IPaddress but also to a different port. Along with this, the user devicemay be configured to service the traffic requests as specified by acontrolling entity, e.g., another server. Such redirecting of trafficcan be particularly useful when there is a large amount of computation,traffic, and/or user requests. Further, mechanisms may be provided thatallow content such as movies (or portions thereof) to be rapidlydeployed to user devices for services of traffic requests.

In sum, the techniques described herein enable virtual server farms withlow investment, since the user devices are being purchased by end-users.The service provider therefore avoids (at least in part) purchasingcomputers, housing computers, paying electricity bills, and/or payingfor network connectivity.

EXEMPLARY EMBODIMENTS

FIGS. 1-5 illustrate exemplary embodiments that can provide some or allof the features described above. The methods, systems, and apparatusesillustrated by FIGS. 1-5 may refer to examples of different embodimentsthat include various components and steps, which can be consideredalternatives or which can be used in conjunction with one another in thevarious embodiments. The description of the illustrated methods,systems, and apparatuses shown in FIGS. 1-5 is provided for purposes ofillustration and should not be considered to limit the scope of thedifferent embodiments.

FIG. 1 illustrates a functional diagram of a system 100 for controllingone or more user devices 105. The skilled reader should note that thearrangement of the components illustrated in FIG. 1 is functional innature, and that various embodiments can employ a variety of differentstructural architectures. Merely by way of example, one exemplary,generalized architecture for the system 100 is described below withrespect to FIG. 5, but any number of suitable hardware arrangements canbe employed in accordance with different embodiments.

A user device 105 can be any device that has processing capability,random access memory, transient storage, and/or the like (collectivelyreferred to herein as “computing resources”) that can participate in adistributed infrastructure arrangement as described herein. In somecases, a user device 105 might have one or more sensors (e.g., asdescribed with respect to the VCDs in the '182 patent and the PDDs inthe Mobile Presence Detection Applications), such as microphones,cameras, location sensors (e.g., GPS receivers), infrared sensors,distance measurement sensors, and the like, and input from such sensorscan also be considered a type of computing resource, in accordance withsome embodiments. Thus, for example, a distributed infrastructuresystem, as described herein, might be able to gather and/or employ inputfrom such sensors (such as facial expressions, spoken expressions,and/or gestures, to name a few examples, but more generally includingany type of data that can be captured by such sensors) across apotentially large number of such user devices. Such input (which mightbe collected only with user consent, to protect user privacy) can beused for a variety of applications, such as gauging mass reaction toparticular news events or other stimuli (e.g., watching particulartelevision programs, playing newly-released video games, etc.).

In some aspects, a user device 105 is capable of communicating with acontrol server 110 over a network 115 and/or can provide any of avariety of types of video communication, content delivery, gaming,and/or presence detection functionality. Merely by way of example, insome aspects, a user device 105 can be capable of providing pass throughvideo/audio to a display device (and/or audio playback device) fromanother source (such as a set-top box), and/or overlaying suchvideo/audio with additional content generated or received by the userdevice 105. In other aspects, a user device 105 can comprise one or moresensors (e.g., digital still cameras, video cameras, webcams, securitycameras, microphones, infrared sensors, touch sensors, and/or the like),and/or can be capable, using data acquired by such sensors, of sensingthe presence of a user, identifying a user, and/or receiving user inputfrom a user; further, a user device 105 can be capable of performingsome or all of the other functions described herein and/or in theRelated Applications. Hence, in various embodiments, a user device 105can be embodied by a video calling device, such as any of the videocommunication devices described in U.S. Pat. No. 8,144,182, a laptopcomputer, a desktop computer, a mobile phone, a smart phone, a tabletcomputer, a video game console, and/or a streaming media player, to namea few non-limiting examples. In some instances, user device 105 mightinclude presence detection functionality similar to the presencedetection device (“PDD”) as described in detail in the Mobile PresenceDetection Application.

In one aspect of certain embodiments, as described more fully withrespect to FIG. 3 below, a user device 105 can be placed functionallyinline between a local content source and a display device, althoughthis is not required in all embodiments. A local content source can beany device that provides an audio or video stream to a display deviceand thus can include, without limitation, a cable or satellite set-topbox (“STB”), an Internet Protocol television (“IPTV”) STB, devices thatgenerate video and/or audio, and/or acquire video and/or audio fromother sources, such as the Internet, and provide that video/audio to adisplay device; hence a local content source can include devices such asa video game console, a Roku® streaming media player, an AppleTV®,and/or the like. Hence, when situated functionally inline between alocal content source and a display device, the user device can receivean audiovisual stream output from the local content source, modify thataudiovisual stream in accordance with the methods described herein, andprovide the (perhaps modified) audiovisual stream as input to thedisplay device. It should be noted, however, that, in some cases, thefunctionality of a local content source can be incorporated within auser device, and/or the functionality of a user device can beincorporated within a local content source; further, it should beappreciated that a user device (which might or might not include localcontent source functionality) can be disposed inline with one or moreother local content sources or one or more other user devices. Hence,for example, a user device with some local content source functionality(such as a video game console) might be disposed inline between one ormore other user devices or one or more other local content sources (suchas a cable STB, satellite STB, IPTV STB, and/or a streaming mediaplayer) and a display device.

In an aspect of some embodiments, the system can include a softwareclient that can be installed on a computing device (e.g., a laptopcomputer, wireless phone, tablet computer, etc.) that has a built-incamera and/or has a camera attached (e.g., a USB webcam). This clientcan act as an interface to allow remote control of the built-in and/orattached camera on the computing device. In some embodiments, thecomputing device might have a built-in microphone(s) and/or has amicrophone(s) attached (e.g., a table-top microphone, a wall-mountedmicrophone, and/or a microphone removably mountable on a television, onthe user device, and/or on some other suitable user device, or thelike). The software client can alternatively and/or additionally act asan interface to allow remote control of the built-in and/or attachedmicrophone on the computing device. In some cases, the camera and/ormicrophone can be automatically or autonomously controlled to obtainoptimal video and/or audio input.

The system 100 can further include a control server 110, which can haveany suitable hardware configuration, and an example of one suchconfiguration is described below in relation to FIG. 3. In one aspect,the control server 110 is a computer that is capable of receiving userinput via a user interface 120 and/or performing operations forcontrolling the user device(s) 105, for example as described in furtherdetail below. As used with regard to the relationship between thecontrol server 110 and a user device 105, the term “control” should beinterpreted broadly to include any operations that operate, configure,or directly control the user device 105, as well as operations thatfacilitate communication between the user device 105 and other devices,networks, content sources, and the like, and/or operations that provideprocessing support to a user device 105. Merely by way of example,however, the control server 110 can detect user presence,identify/authenticate users, and/or obtain and distribute content topresent users. In other cases, the control server can receive and/orstore user input and/or user preferences that can specify whether andhow presence information should be used, whether and how the user's userdevice(s) may be used in the distributed infrastructure, whether and howthe user's content and profiles should be handled under certainsituations, and/or the like. Detailed description of user presencedetection and corresponding use of user input and/or user preferences isprovided in the '928 Application, which has already been incorporatedherein.

The control server 110 can provide a user interface (which can be usedby users of the user devices 105, advertisers, and/or the like). Thecontrol server 110 might also provide machine-to-machine interfaces,such as application programming interfaces (“APIs”), data exchangeprotocols, and the like, which can allow for automated communicationswith the user devices 105, etc. In one aspect, the control server 110might be in communication with a web server 125 and/or might incorporatethe web server 125, which can provide the user interface, e.g., over thenetwork to a user computer (not shown in FIG. 1) and/or amachine-to-machine interface. In another aspect, the control server 110might provide such interfaces directly without need for a web server125. Under either configuration, the control server 110 provides theuser interface 120, as that phrase is used in this document. In somecases, some or all of the functionality of the control server 110 mightbe implemented by the user device 105 itself.

In an aspect, the user interface 120 allows users to interact with thecontrol server 110, and by extension, the user devices 105. A variety ofuser interfaces may be provided in accordance with various embodiments,including without limitation graphical user interfaces that display, fora user, display fields on display screens for providing information tothe user and/or receiving user input from a user.

Merely by way of example, in some embodiments, the control server 110may be configured to communicate with a user computer (not shown inFIG. 1) via a dedicated application running on the user computer; inthis situation, the user interface 120 might be displayed by the usercomputer based on data and/or instructions provided by the controlserver 110. In this situation, providing the user interface mightcomprise providing instructions and/or data to cause the user computerto display the user interface. In other embodiments, the user interfacemay be provided from a web site, e.g., by providing a set of one or moreweb pages, which might be displayed in a web browser running on the usercomputer and/or might be served by the web server 125. As noted above,in various embodiments, the control system 110 might comprise the webserver and/or be in communication with the web server 125, such that thecontrol server 110 provides data to the web server 125 to beincorporated in web pages served by the web server 125 for receptionand/or display by a browser at the user computer.

The network 115, specific examples of which are described below withregard to FIG. 5, can be any network, wired or wireless, that is capableof providing communication between the control server 110 and the userdevices 105, and/or of providing communication between the controlserver 110 (and/or the web server 125) and a user computer. In aspecific embodiment, the network 115 can comprise the Internet, anytelevision distribution network, and/or any Internet service provider(“ISP”) access networks that provide Internet access to the controlserver 110, the user computer, and/or the user devices 105.

In some embodiments, the system 100 can include a cloud storage system130, which can be used, as described in further detail below, to storeadvertisements, presence information, images, and/or video that arecaptured and uploaded by the user devices 105, and/or the like. In somecases, the cloud storage system 130 might be a proprietary systemoperated by an operator of the control server 110. In other cases, thecloud storage system 130 might be operated by a third party provider,such as one of the many providers of commercially available cloudservices. In yet a further embodiment, the cloud storage system 130might be implemented by using resources (compute, memory, storagenetwork, etc.) shared by a plurality of user devices distributed amongvarious users of the system. Merely by way of example, as described infurther detail below, a plurality of user devices might each have somededicated computing resources (such as a storage partition), which arededicated for use by the system, and/or some ad hoc resources (such asnetwork bandwidth, memory, processing resources, etc.) that areavailable to the system when not in use by a user. Such resources can beused as cloud storage and/or can be used to provide a distributed,cloud-like platform on which a control server can run as a virtualmachine, cloud container, and/or the like.

According to some embodiments, user device 105 might comprise a videoinput interface to receive video input from a local content source(e.g., a cable, satellite, or IPTV set-top box (“STB”), and/or the like)and an audio input interface to receive audio input form the localcontent source. User device 105 might further comprise a video outputinterface to provide video output to a video display device and an audiooutput interface to provide audio output to an audio receiver. In somecases, the video display device and the audio receiver might be embodiedin the same device (e.g., a TV with built-in speaker system, or thelike). With the input and output interfaces, user device 105 mightprovide pass-through capability for video and/or audio between the localcontent source and the display device. In some instances,high-definition multimedia interface (“HDMI”) cables or other suitableHD data/signal cables may be used to provide the interconnections forthe pass-through. User device 105 may, in some cases, comprise a videocapture device to capture at least one of image data or video data andan audio capture device to capture audio data. User device 105 may alsocomprise a network interface, at least one processor, and a storagemedium in communication with the at least one processor.

In some aspects, a plurality of user devices 105 might becommunicatively coupled together in a network (e.g., network 115), eachuser device being located in one of a plurality of customer premises. Insome cases, multiple user devices may be located in a single customerpremises. For implementing distributed infrastructure for cloudcomputing, cloud-based application hosting, and/or cloud-based datastorage, a computer (which might be a control/central server over anetwork, another user device of the plurality of user devices 105 overthe network, and/or the like) might establish one or more user devices105 of the plurality of user devices 105 as distributed infrastructureelements and might provide at least one of one or more softwareapplications, customer data, and/or media content to the one or moreuser devices 105 for hosting on the one or more user devices 105. Insome embodiments, establishing the one or more user devices 105 asdistributed infrastructure elements might comprise the computerinstalling software, applications, or software applications on at leasttwo user devices 105 of the one or more user devices 105 to enabledistributed processing of software applications across the at least twouser devices 105. In some instances, establishing the one or more userdevices 105 as distributed infrastructure elements might comprise thecomputer installing software, applications, or software applications onat least two user devices 105 of the one or more user devices 105 toenable hosting of software applications across the at least two userdevices 105. Alternatively, or in addition, establishing the one or moreuser devices 105 as distributed infrastructure elements might comprisethe computer installing, with the computer, software on at least twouser devices 105 of the one or more user devices 105 to enabledistributed storage of one or more of customer data or media contentacross the at least two user devices 105. Providing the at least one ofone or more software applications, customer data, and/or media contentto the one or more user devices 105 for hosting on the one or more userdevices 105 might, in some instances, comprise the computer providingmirrored copies of the at least one of one or more softwareapplications, customer data, and/or media content to each of at leasttwo user devices 105. In alternative or additional embodiments,providing the at least one of one or more software applications,customer data, and/or media content to the one or more user devices 105for hosting on the one or more user devices 105 might comprise thecomputer providing portions of each of the at least one of one or moresoftware applications, customer data, and/or media content to each of atleast two user devices 105.

In some cases, the computer might be at least one of the plurality ofuser devices 105; in some embodiments, the computer might be at leastone of the one or more user devices 105 that are established asdistributed infrastructure elements. Alternatively or in addition, thecomputer might be a control server (e.g., control server 110) incommunication with the plurality of user devices 105 over the network115. In other words, a user device 105 that is not being used fordistributed infrastructure purposes may be used to control one or moreuser devices 105 that are established as distributed infrastructureelements. Alternatively, a user device 105 that has been established asa distributed infrastructure element may be used to control other userdevices 105 that are established as distributed infrastructure elements.Alternatively, or in addition, a control server (e.g., a non-user deviceserver computing system) in the network may be used to control the oneor more user devices 105 that are established as distributedinfrastructure elements.

In some instances, the computer might determine a redundancy level forhosting each of the at least one of the one or more softwareapplications, the customer data, or the media content across the one ormore user devices 105. The redundancy level, in some cases, mightcomprise, without limitation, an appropriate indicator denoting thenumber of copies of the software application, data, and/or media contentfor cloud-based application hosting (i.e., indicative of the number ofuser devices 105 for hosting the software application, data, and/ormedia content); the number of portions to divide each softwareapplication, data, and/or media content; an index indicating a level ofgeographical diversity; and/or a particular redundant array ofindependent disks (“RAID”)-type level or configuration, or the like. Insome embodiments, the level of geographic diversity might include,without limitation, separate but neighboring or nearby buildings,separate but nearby municipalities, separate but nearby states orprovinces, opposite or distant parts of a municipality, opposite ordistant parts of a state or province, states or provinces separated byone or more other states or provinces, across a nation, across severalnations, and/or dispersed throughout the world, or the like. RAID-typelevels or configurations, as known in the art, might include RAID0through RAID9, and/or hybrid or nested RAID (e.g., RAID10, or the like),each level or configuration being indicative of well-defined types ofdata storage redundancy and associated other characteristics (e.g., withor without mirroring, with or without parity, minimum number of drivesnecessary, space efficiency, fault tolerance, array failure rate, readand write performance, etc.). In some embodiments, the computer mightprovide the at least one of one or more software applications, customerdata, and/or media content to the one or more user devices 105, based atleast in part on the determined redundancy level for hosting each of theat least one of the one or more software applications, the customerdata, and/or the media content across the one or more user devices 105.

According to some aspects, the computer might collect resource usageinformation, network connectivity information, or both, for each of theone or more user devices 105. The computer might determine suitabilityof each of the one or more user devices 105 to host the at least one ofone or more software applications, customer data, and/or media content,based at least in part on one or more of the collected resource usageinformation and/or the collected network connectivity information.

The user, in accordance with some embodiments, might be given theability to choose how his or her user device may be used, e.g., fordistributed infrastructure purposes. In some instances, the computermight receive user input from the user among a plurality of usersindicating what type of software applications, customer data, and/ormedia content are permitted to be hosted on a user device 105 owned bythe user. In some non-limiting examples, the user might allow hostingsome types of applications (e.g., e-mail hosting, web hosting, etc.) butnot allowing hosting some other types of applications (e.g., filetransfer protocol (“FTP”) services, and hosting computational services,or the like). In some examples, the user might permit storage of somemedia content (e.g., media content provided by legitimate sources), butmight block storage of other media content (e.g., media content providedby unknown or questionable sources).

The computer might also receive user input from the user indicating atleast one of a level of processing power or a level of storage on theuser device 105 owned by the user that is permitted for hosting theindicated type of software applications, customer data, and/or mediacontent. The user, in one non-limiting example, may be willing toprovide up to 40% of the device's CPU, 20% of its memory, 15% of itslocal storage, etc. In some examples, the user might put a cap on thenetwork bandwidth allocated to distributed infrastructureimplementation.

The computer, in some embodiments, might label each of the one or moreuser devices 105 with a first label, a second label, or both. The firstlabel might indicate the type of distributed hosting, based on theindicated type of software applications, while the second label mightindicate capacity of distributed hosting, based on the at least one ofthe indicated level of processing power or the indicated level ofstorage. The computer might determine suitability of each of the one ormore user devices 105 to host the at least one of one or more softwareapplications, customer data, or media content, based at least in part onone or more of the first label or the second label. In some cases, thecomputer might provide the at least one of one or more softwareapplications, customer data, and/or media content to the one or moreuser devices 105, based at least in part on at least one of the firstlabel, the second label, and/or the determined suitability of each ofthe one or more user devices to host the at least one of one or moresoftware applications, customer data, or media content.

According to some embodiments, the computer might monitor performance ofat least one of the one or more user devices 105, performance of thedistributed infrastructure elements as a whole, or both. The computermight determine one or more courses of action to invoke, based at leastin part on performance metrics of the at least one user device 105,performance metrics of the distributed infrastructure elements as awhole, or both. Based on such determination, the computer might invokethe one or more courses of action. For example, in the case that theperformance metrics indicate that a particular user device 105 hasreached (or is close to reaching) its labeled threshold capacity, thecomputer might invoke a course of action that reroutes data and/or mediacontent to another user device 105 for cloud-based application hostingor distributed storage thereon. In other examples, if the resources ofthe particular user device are being utilized to a greater than usualextent by its owner, then regardless of whether or not the levels set bythe user for distributed infrastructure have been reached (or are closeto being reached), the computer might invoke a course of action to givepriority to the owner's usage, and to reduce or eliminate the use of theresources of the particular user device for distributed infrastructurepurposes (i.e., by utilizing other user devices 105 (either nearby ordistant user devices)).

As discussed above, the owner of a user device 105 may, in someembodiments, be compensated for the use of his or her user device 105 asa distributed infrastructure element. In such embodiments, the computermight monitor usage of the user device 105 owned by a user, among theone or more user devices, as a distributed infrastructure element over afirst period (e.g., a week, two weeks, a month, two months, a quarter,half a year, a year, etc.). For example, the computer might monitorprocessor usage, memory usage, local storage usage, and/or networkusage, etc. In some cases, the computer might monitor the type ofcloud-based application hosting that the particular user device 105 hasbeen used for (e.g., for hosting applications including, but not limitedto, e-mail, websites, FTP services, and/or computational services, etc.;for distributed storage of data and/or media content, etc.).

The computer might subsequently determine appropriate compensation tothe user for use of the user device 105 owned by the user as adistributed infrastructure element over the first period. For example,the user might be compensated by rebates, discounts, coupons, money,etc. for the use of his or her user device(s) as a distributedinfrastructure element(s). The user might be compensated more for, e.g.,20% CPU usage compared with 15% CPU usage, or the like. Similarly, theuser might be compensated more for one of e-mail hosting, web hosting,hosting FTP services, hosting computational services, and/or distributedstorage of data and/or media content, but less for another of e-mailhosting, web hosting, hosting FTP services, hosting computationalservices, and/or distributed storage of data and/or media content.

In various embodiments herein, each user device 105 might adhere to oneof a limited number of classes of hardware, where each class of hardwaremight have a known, common hardware configuration. This may be distinctfrom, e.g., personal computers, which can have an unlimited number ofclasses of hardware, with unlimited options for different hardware (andsoftware) configurations, where a plurality of such unlimited number ofclasses of hardware may have unknown, and non-common hardwareconfigurations, making logistics for distributed infrastructureextremely difficult to manage.

In a non-limiting example of user devices 105 adhering to a limitednumber of classes of hardware, a particular generation of a gamingconsole might have one or more revisions or releases, which might occurfor any number of reasons, including, without limitation, particularbundle releases (e.g., “Star Wars edition” of the gaming console, etc.),advertising reasons (e.g., “Hobbit edition” of the gaming console inconjunction with theatrical release of the latest Hobbit movie, etc.),cost and availability of hardware components (e.g., the processormanufacturer may be discontinuing a particular processor and releasing anew model, etc.), improvements in hardware capabilities orfunctionalities (e.g., the new graphics processor might be capable ofrendering higher definition graphics, or a new camera might have muchhigher resolution, etc.), and/or the like. The gaming console might havegeneration releases (e.g., first generation console, second generationconsole, and so forth), each successive generation release being animprovement in terms of hardware and software capability, and perhapshaving slightly (or vastly) different form factors. In some instances,each generation of the gaming console might represent a different classof hardware. In other instances, each revision or release of eachgeneration of the gaming console might represent a different class ofhardware. Regardless, although each class (whether at the granularity ofgeneration release or revision release, and/or the like) might haveslightly different sets of hardware components with slightly differenthardware capabilities and functionalities, each user device (in thisexample, gaming console) might have at least a minimum common hardwareconfiguration. In some examples, the minimum common hardwareconfiguration for each such user device might include, withoutlimitation, one or more of a high capacity/speed processor(s) (e.g., atleast 1 GHz processor), large capacity memory (e.g., at least 8 Gb RAM),large capacity storage (e.g., at least 10 Gb local storage), highresolution camera (e.g., at least 8 megapixel), and/or the like.

In some embodiments, establishing such user devices 105 as distributedinfrastructure elements might comprise determining a class of each ofthe plurality of user devices, and determining capabilities of each userdevice 105, based on the determined class of each user device. Based atleast in part on the determined capabilities of each user device 105, atleast one of one or more software applications, customer data, or mediacontent may be provided to such user devices 105 accordingly, for cloudcomputing, cloud-based application hosting, and/or cloud-based datastorage, or the like, in accordance with the various embodiments herein.Although the example above refers to a gaming console, any suitable userdevice may be implemented (so long as they have common hardwareconfigurations distributed across a limited number of classes ofhardware)—including, without limitation, VCDs, smart smoke/CO detectors,cameras (having processor, memory, local storage, and/or networkfunctionality), and/or the like. Establishing distributed infrastructurewith such user devices allows for utilizing normally underutilizedhardware over known minimum hardware capable components, with minimaloverhead costs in terms of network and hardware maintenance (typicallyincurred by cloud service providers), much of which may already be borneby the user/owner of such user devices at the user/owner's premises forthe primary functions of such user devices (e.g., as a gaming device, avideo calling device, a smoke/CO detector, a camera, and/or the like).

FIG. 2 illustrates a method 200 of implementing distributedinfrastructure for cloud computing, cloud-based application hosting,and/or cloud-based data storage, in accordance with one set ofembodiments. While the techniques and procedures are depicted and/ordescribed in a certain order for purposes of illustration, it should beappreciated that certain procedures may be reordered and/or omittedwithin the scope of various embodiments. Moreover, while the methodillustrated by FIG. 2 can be implemented by (and, in some cases, aredescribed below with respect to) the system 100 of FIG. 1 (or componentsthereof), such methods may also be implemented using any suitablehardware implementation. Similarly, while the system 100 of FIG. 1(and/or components thereof) can operate according to the methodillustrated by FIG. 2 (e.g., by executing instructions embodied on acomputer readable medium), the system 100 can also operate according toother modes of operation and/or perform other suitable procedures.

Turning to FIG. 2, the method 200 might comprise registering a masteraccount for a user (block 205). In accordance with various embodiments,registering a master account for a user can comprise a variety ofoperations. Merely by way of example, registering a master account cancomprise creating a database entry for a particular user and/orassigning authentication credentials to that user; these credentials canbe used to access the master account, as described in further detailbelow.

The method 200 can also include assign one or more user devices to themaster account (block 210). As discussed above, the one or more userdevices can be embodied by a video calling device, such as any of thevideo communication devices described in U.S. Pat. No. 8,144,182, alaptop computer, a desktop computer, a mobile phone, a smart phone, atablet computer, a video game console, and/or a streaming media player,to name a few non-limiting examples. For instance, the user mightidentify any user devices that the user owns (or is otherwise associatedwith; e.g., members of the user's family might be associated with thedevices owned by the user), and the system can assign those user devicesto the user's master account. According to some embodiments, the user'smaster account might include any suitable number of sub-accounts. In oneexample, each member of the user's family might be associated with asub-account linked with the master account. In some instances, the user(or some members of his or her family) might have a work/schoolsub-account and a home sub-account, the former being associated withprofiles and/or media content appropriate for school or work, while thelatter being associated with all, or all other, profiles and/or mediacontent. In some embodiments, the master account and the plurality ofsub-accounts might be organized as a hierarchy, with the master account(being at the top of the hierarchical structure) having full access toprofiles and media content of each sub-account, the sub-accounts at thenext level having access to profiles and/or media content of only thosesub-accounts that the master account has given access to, and thesub-accounts at lower levels having limited access to profiles and/ormedia content. For example, the user's master account might have accessto all profiles and/or media content associated with the master accountand the sub-accounts. The user can provide his or her spouse with asub-account having the same access to profiles and/or media content,while providing limited access to profiles and/or media content to eachof the user's children's sub-account(s). In some instances, the userand/or the user's spouse might impose limits on access to profilesand/or media content for each of their work sub-accounts.

In some cases, each user device might have an identifier, such as ahardware identifier, IP address, nickname, and/or the like, by which thesystem can address the user device, and assigning a user device to themaster account can comprise associating that identifier with the masteraccount. When a user device is assigned to a master account, the user ofthat account will be able to access, configure, and/or control the userdevice through the control server, for example as described in furtherdetail below. In some cases, the user might own a plurality of userdevices and might wish to control all of the user devices from a singlemaster account. In an aspect, a user can identify such devices through auser interface to the control server.

In another aspect, as described briefly above, the assignment processcan be simplified. When the user first configures a user device (usuallylocally, but perhaps over the network), the user can provide credentialsto the user device that associate the device with the master account.Thereafter, the user device might be configured to communicate with thecontrol server and identify itself using those credentials; at thatpoint, the control server can assign the user device to the masteraccount, and no credentials need to be stored on the user device fromthat point forward (other than perhaps the user device's own identifyinginformation).

Hence, the method 200, in the illustrated embodiment, might furthercomprise providing a user interface to allow interaction between theuser and the control server (block 215). For example, the user interfacecan be used to output information for a user, e.g., by displaying theinformation on a display device, printing information with a printer,playing audio through a speaker, etc.; the user interface can alsofunction to receive input from a user, e.g., using standard inputdevices such as mice and other pointing devices, motion capture devices,touchpads and/or touchscreens, keyboards (e.g., numeric and/oralphabetic), microphones, etc. The procedures undertaken to provide auser interface, therefore, can vary depending on the nature of theimplementation; in some cases, providing a user interface can comprisedisplaying the user interface on a display device; in other cases,however, in which the user interface is displayed on a device remotefrom the computer system (such as on a client computer, wireless device,etc.), providing the user interface might comprise formatting data fortransmission to such a device and/or transmitting, receiving, and/orinterpreting data that is used to create the user interface on theremote device. Alternatively and/or additionally, the user interface ona client computer (or any other appropriate user device) might be a webinterface, in which the user interface is provided through one or moreweb pages that are served from a computer system (and/or a web server incommunication with the computer system), and are received and displayedby a web browser on the client computer (or other capable user device).The web pages can display output from the computer system and receiveinput from the user (e.g., by using Web-based forms, via hyperlinks,electronic buttons, etc.). A variety of techniques can be used to createthese Web pages and/or display/receive information, such as JavaScript,Java applications or applets, dynamic Hypertext Markup Language (“HTML”)and/or Asynchronous JavaScript and XML (or extensible markup language)(“AJAX”) technologies, to name but a few examples.

In many cases, providing a user interface will comprise providing one ormore display screens each of which includes one or more user interfaceelements. As used herein, the term “user interface element” (alsodescribed as a “user interface mechanism” or a “user interface device”)means any text, image, or device that can be displayed on a displayscreen for providing information to a user and/or for receiving userinput. Some such elements are commonly referred to as “widgets,” and caninclude, without limitation, text, text boxes, text fields, tablesand/or grids, menus, toolbars, charts, hyperlinks, buttons, lists, comboboxes, checkboxes, radio buttons, and/or the like. While any illustratedexemplary display screens might employ specific user interface elementsappropriate for the type of information to be conveyed/received bycomputer system in accordance with the described embodiments, it shouldbe appreciated that the choice of user interface elements for aparticular purpose is typically implementation-dependent and/ordiscretionary. Hence, the illustrated user interface elements employedby any display screens described herein should be considered exemplaryin nature, and the reader should appreciate that other user interfaceelements could be substituted within the scope of various embodiments.

As noted above, in an aspect of certain embodiments, the user interfaceprovides interaction between a user and a computer system. Hence, whenthis document describes procedures for displaying (or otherwiseproviding) information to a user, or to receiving input from a user, theuser interface may be the vehicle for the exchange of such input/output.Merely by way of example, in a set of embodiments, the user interfaceallows the user to log on to a master account, access user devices viathe control server, etc.

In an aspect of some embodiments, the user logs onto his or her masteraccount at the control server in order to access and/or control userdevices assigned to that account. Accordingly, at block 220, the method200 can include authenticating the user with a set of credentialsassociated with the master account (e.g., with any of several knownauthentication schemes, such as a userid/password challenge, acertificate exchange process, and/or the like, as well as authenticationtechniques, described in further detail below, that employ sensors on auser device, such as facial recognition, voiceprint analysis,gesture-based identification, spoken identifiers, and/or the like). Oncethe user has been authenticated, the user interface can present the userwith a variety of different information, including without limitationinformation about status of user devices assigned to the master accountto which the user has logged on, options for controlling such userdevices, and/or the like.

Thus, in some aspects, the method 200 might further comprise receiving(e.g., via a network, such as the Internet, to name one example) userpreferences (block 225), and in particular user preferences relating tohow the user would like his or her user devices to participate (or not)in a distributed infrastructure arrangement. The system might receive avariety of other preferences, such as preferences related to mobilepresence detection, some of which are described in detail in the MobilePresence Detection Application, which has already been incorporatedherein. The method 200, then, can further include controlling and/orconfiguring the user device, in some cases based at least in part on theuser preferences (block 230).

With respect to distributed infrastructure functionality, userpreferences might include, without limitation, preferences indicatingwhether or not to allow a user device owned by the user to be used fordistributed infrastructure; preferences indicating what type of softwareapplications, customer data, and/or media content (of other user deviceusers and/or subscribers of a cloud service) are permitted to be hostedon a user device owned by the user; and/or preferences indicating amountof resources of a user device to dedicate to the distributedinfrastructure; etc. In some embodiments, in addition to indicating howa user's user device may be used in distributed infrastructureimplementation, user preferences might allow a user to indicate how theuser's own applications, data, and/or media content may be hosted onother users' user devices. For example, the user might be given theoption to encrypt any and/or all personal data, any and/or all personalapplications, and/or any and/or all files or lists indicating whichmedia content are associated with the user. Common media content (whichmight include popular media content, or any other media content) mayremain unencrypted for common usage by any number of users on any numberof user devices, subject only to any subscription, rental, or purchaserestrictions on the particular media content as associated with any userand/or any user device.

In some examples, the user might indicate that her user device may beused for distributed processing, but not distributed cloud-based datastorage, or vice versa. Alternatively, the user might indicate that heruser device may be used for both distributed processing and distributedcloud-based data storage. In some embodiments, the user might allow thehosting, on his or her user device, of at least portions of softwareapplications that are published by known and reputable softwarecompanies or published by companies on behalf of governmental agencies,or the like, while blocking hosting of software applications associatedwith marketing, spam, data mining, and/or potential copyrightviolations, etc. The user might also, in some instances, requireindications that any customer data and/or media content do not violatevalid copyrights, or the like. For instance, media content provided bylegitimate paid subscription services or content providers on behalf ofthe subscribers with whom the media content are associated might beassociated with such an indication, which in some cases might be byvirtue of the association with one or more databases associated with thelegitimate paid subscription service providers or content providers.Rather than association with the subscribers of a content provider, themedia content may be directly associated with the content provider, inwhich case the indication of non-violation of valid copyrights might beinferred by virtue of association with one or more databases associatedwith the legitimate content provider. In some embodiments, userpreferences might include preferences whether or not to allow hosting ofat least portions of e-mail domains, social media websites, news sites,personal websites, academic websites, professional websites (e.g., forlaw offices, medical clinics, hospitals, engineering firms, accountingfirms, etc.). In any event, as the distributed processing, distributedapplication hosting, and/or distributed data storage may be controlledby the cloud service provider or a third party provider, rather than bythe individual owners of the user devices, the digital millenniumcopyright act (“DMCA”), and the limited liability provisions and rulesapplicable to providers of online services may be applicable.

According to some embodiments, the user might set limits on the usage ofresources on each user device owned by the user. For example, the usermight indicate that, when used as a distributed infrastructure element,CPU usage on each user device should not exceed 50%, memory usage shouldnot exceed 25%, local data storage should not exceed 20%, networkbandwidth should not exceed 30% of normal bandwidth, etc. Althoughspecific percentage values are given for this example, the variousembodiments are not so limited, and any suitable percentage value orfixed value, or range of percentage or fixed values may be provided asoptions for the user to select as part of the user preferences for eachof CPU usage, memory usage, local data storage usage, and/or networkusage, etc. If the user owns more than one user device, the user mightbe given the option to choose the same values or range of values for allthe user devices, or to set individualized preference settings for eachuser device.

The amount of control imposed by the control server can vary accordingto embodiment and implementation. Merely by way of example, as notedabove, in some embodiments, there might be no control server, and theuser device might incorporate all the functionality described hereinwith regard to the control server, including peer-to-peer functionality,distributed processing functionality, distributed application hostingfunctionality, and/or distributed data storage functionality with otheruser devices. In other embodiments, the control server (or one of theother user devices) might provide fairly fine-grained control over theuser device, such as instructing the camera to capture images forpurposes of determining presence. Alternatively, or additionally, thecontrol server (or one of the other user devices) may receive the imagesdirectly and may perform the presence determination, identification,and/or authentication procedures at the control server, in the case ofmobile presence detection (for example). In some instances, the controlserver (or one of the other user devices) might instruct the processorto execute particular portions of one or more software applicationsdesignated for distributed processing. In some embodiments, the controlserver (or one of the other user devices) might instruct the localstorage to store particular portions of one or more software, customerdata, and/or media content, or the like. The division of responsibilitybetween the control server and the user device can fall anywhere alongthis spectrum. In some cases, for instance, the control server mightprovide the user preferences to the user device, which then isresponsible for implementing appropriate instructions in accordance withthose preferences, and transmitting acknowledgements and/or statusinformation to the control server, which takes the appropriate action inresponse to the acknowledgements and/or status information—such as,redistributing portions of the one or more software, customer data,and/or media content to other user devices in response to receiving andanalyzing the status information, or the like. Alternatively and/oradditionally, the user device itself might be responsible for takingsuch actions.

At block 235, the method 200 can comprise determining suitability ofparticular software applications, data, and/or media content fordistributed hosting (which might include, without limitation, cloudcomputing, cloud-based application hosting, cloud-based data storage,and/or the like). For example, if a particular software application caneasily be split or otherwise divided so as to execute the dividedportions of the software application using different processors (i.e.,processors of different user devices, or the like), to achieve resultssimilar to results obtainable if the software application as a whole wasexecuted by a single processor, then such particular softwareapplication may be deemed suitable for distributed processing.Conversely, if a particular software application cannot be split orotherwise divided so as to execute the divided portions of the softwareapplication, to achieve results similar to results obtainable if thesoftware application as a whole was executed, then such particularsoftware application may be deemed unsuitable for distributedprocessing. Even if a particular software application is deemedunsuitable to be divided for distributed processing, it may bedetermined if the particular software application as a whole can beexecuted by each of one or more user devices other than the originatinguser device or origination computing device. If so, the particularsoftware application might be sent to the one or more user devices forexecution thereon.

Likewise, if particular data and/or media content can be divided (andlater combined), then such particular data and/or media content might bedeemed suitable for distributed data storage. Otherwise, such particulardata and/or media content (especially if prone to errors or datacorruption if divided and later combined, or the like) may be deemedunsuitable for distributed data storage. Even if a particular dataand/or media content are deemed unsuitable to be divided for distributeddata storage, it may be determined whether the particular data and/ormedia content as a whole might be stored on each of one or more userdevices other than the originating user device or origination computingdevice. If so, the particular data and/or media content as a whole mightbe sent to the one or more user devices for storage thereon.

In a similar manner, if a particular software application cannot besplit or otherwise divided such that divided portions of the softwareapplication may be hosted on several user devices, to achieve resultssimilar to results obtainable if the software application as a whole washosted on a single device, then such particular software application maybe deemed unsuitable for distributed application hosting. Even if aparticular software application is deemed unsuitable to be divided fordistributed application hosting, it may be determined if the particularsoftware application as a whole can be hosted by each of one or moreuser devices other than the originating user device or originationcomputing device. If so, the particular software application might besent to the one or more user devices for hosting thereon.

If the particular software application, data, and/or media content aredetermined to be suitable for hosting, then it may be determined (atblock 240) what the redundancy level might be for hosting the particularsoftware application, data, and/or media content across a plurality ofuser devices. For example, high demand, high priority, and/or sensitivedata (either copies and/or portions thereof) might be distributed acrossa larger number of user devices—e.g., with several copies distributedacross geographically diverse user devices, or the like—as compared withlow demand, low priority, and low sensitivity data (to name anon-limiting example) Likewise, media content that is of high demand, orthe like, (either copies and/or portions thereof) might similarly bedistributed across a larger number of user devices—e.g., with severalcopies distributed across geographically diverse user devices, or thelike—as compared with low demand media content (for example). Highdemand, high priority, and/or sensitive software applications (eithercopies and/or portions thereof) may also be distributed across a largernumber of user devices in a similar manner as high demand, highpriority, and/or sensitive data or high demand data, as compared with,e.g., low demand, low priority, and low sensitivity softwareapplications. In some cases, the redundancy level might comprise,without limitation, an appropriate indicator denoting the (minimum)number of copies of the software application, data, and/or media contentfor cloud-based application hosting (i.e., indicative of the (minimum)number of user devices for hosting the software application, data,and/or media content), the number of portions to divide each softwareapplication, data, and/or media content, an index indicating a level ofgeographical diversity, and/or a particular RAID-type level orconfiguration, or the like. In some embodiments, the level of geographicdiversity might include, without limitation, separate but neighboring ornearby buildings, separate but nearby municipalities, separate butnearby states or provinces, opposite or distant parts of a municipality,opposite or distant parts of a state or province, states or provincesseparated by one or more other states or provinces, across a nation,across several nations, and/or dispersed throughout the world, etc.RAID-type levels or configurations might include RAID0 through RAID9,and/or RAID10 or other hybrid or nested RAID, or the like, each level orconfiguration being indicative of well-defined types of data storageredundancy and associated other characteristics (e.g., with or withoutmirroring, with or without parity, minimum number of drives necessary,space efficiency, fault tolerance, array failure rate, read and writeperformance, etc.).

At block 245, method 200 might comprise labelling each (applicable) userdevice with the type and capacity of distributed hosting, based on theuser preferences (e.g., preferences indicating what type of softwareapplications, customer data, and/or media content (of other user deviceuses or subscribers of cloud services, etc.) are permitted to be hostedon a user device owned by the user and/or preferences indicating amountof resources of a user device to dedicate to the distributedinfrastructure, as received at block 225). In some cases, each(applicable) user device might be labelled with a first label indicatingtype of distributed hosting, based on the indicated type of softwareapplications, customer data, or media content (from block 225), a secondlabel indicating capacity of distributed hosting, based on the at leastone of the indicated level of processing power or the indicated level ofstorage (from block 225), or both the first and second labels.

Method 200 might further comprise collecting user device resource usageinformation for each user device (at block 250) and/or collecting userdevice connectivity information for each user device (at block 255). Forexample, user device resource usage information might include, withoutlimitation, overall CPU usage; CPU usage specific to cloud-basedapplication hosting, distributed processing, and/or distributed datastorage (collectively, “distributed hosting”); overall memory usage;memory usage specific to distributed hosting; overall local storageusage; local storage usage specific to distributed hosting; and/or thelike. User device connectivity information might include, but is notlimited to, overall bandwidth usage, bandwidth usage specific todistributed hosting, maximum upload speeds, minimum upload speeds,average upload speeds, maximum download speeds, minimum download speeds,average download speeds, how often the user device is connected to thenetwork, how often the user device drops connection to the network, howlong the user device remains connected to (and/or dropped from) thenetwork, how difficult it is to reconnect a dropped connection betweenthe user device and the network, data loss rates, data fidelity/biterror rates, etc.

At block 260, method 200 might comprise determining suitability of eachuser device to host software applications, data, and/or media content;in some cases, this determination might be based at least in part on thelabelled type and capacity (from block 245), and based at least in parton the collected resource usage and/or connectivity information (fromblocks 250 and 255, respectively). Method 200 might further comprise, atblock 265, establishing particular user devices as distributedinfrastructure elements, based on the determination of suitability ofthe user devices to host software applications, data, and/or mediacontent (from block 260). In some embodiments, establishing particularuser devices as distributed infrastructure elements might compriseinstalling software on at least two user devices of the one or more userdevices to enable distributed processing of software applications acrossthe at least two user devices. In some embodiments, establishingparticular user devices as distributed infrastructure elements mightcomprise installing software on at least two user devices of the one ormore user devices to enable hosting of software applications across theat least two user devices. Alternatively, or in addition, establishingparticular user devices as distributed infrastructure elements mightcomprise installing software on at least two user devices of the one ormore user devices to enable distributed storage of one or more ofcustomer data or media content across the at least two user devices.

Method 200, at block 270, might comprise providing particular softwareapplications, data, and/or media content (or copies thereof) to theparticular user devices, based at least in part on the labelled type andcapacity (from block 245), and based at least in part on the determinedredundancy level (from block 240). In some embodiments, providingparticular software applications, data, and/or media content to theparticular user devices may include providing particular softwareapplications, data, and/or media content to the particular user devices,based at least in part on one or more of the collected resource usageinformation and/or the collected network connectivity information (fromblocks 250 and 255, respectively). In some instances, providingparticular software applications, data, and/or media content to theparticular user devices may include providing particular softwareapplications, data, and/or media content to the particular user devices,based at least in part on at least one of the first label (indicatingtype of distributed hosting), the second label (indicating capacity ofdistributed hosting), and/or the determined suitability of each of theone or more user devices to host the at least one of one or moresoftware applications, customer data, or media content. According tosome aspects, providing the at least one of one or more softwareapplications, customer data, or media content to the one or more userdevices for hosting on the one or more user devices comprises providing,with the computer, mirrored copies of the at least one of one or moresoftware applications, customer data, or media content to each of atleast two user devices of the one or more user devices. In some cases,providing the at least one of one or more software applications,customer data, or media content to the one or more user devices forhosting on the one or more user devices comprises providing, with thecomputer, portions of each of the at least one of one or more softwareapplications, customer data, or media content to each of at least twouser devices of the one or more user devices.

In some embodiments, method 200 might, at block 275, include maintaininga copy (or copies) of the particular software applications, data, and/ormedia content on a central server (e.g., control server, if any), acentral database (e.g., cloud database or cloud data store, if any),and/or a permanently connected user device (which might be determinedfrom user device connectivity information collected at block 255). Thepermanently connected user device might be one of the user devices thathas been established as a distributed infrastructure element or one ofthe user devices that has not been established as a distributedinfrastructure element (but might have been configured to havefunctionality similar to that of a control server, or the like).

At block 280, method 200 might comprise monitoring one or more ofperformance of at least one user device of the one or more user devices,or performance of the distributed infrastructure elements, as a whole.Method 200, at block 285, might comprise triggering actions or coursesof action, based on the performance metrics. The triggering process, insome embodiments, might comprise determining one or more courses ofaction to invoke, based at least in part on one or more of performancemetrics of the at least one user device, or performance metrics of thedistributed infrastructure elements (as a whole), and invoking the oneor more courses of action, based on said determination.

According to some embodiments, method 200 might further comprisemonitoring usage of a user device owned by a user, among the one or moreuser devices, as a distributed infrastructure element over a firstperiod, and determining compensation to the user for use of the userdevice owned by the user as a distributed infrastructure element overthe first period (block 290). The user (or owner of the user device) maythen be compensated accordingly, based on such determination.

The reader should note that a wide variety of presence-based functions(including without limitation those described in the RelatedApplications) can be performed by the system in conjunction with varioustechniques described as part of the method 200, and that such functionscan be combined in any suitable way. Merely by way of example, the '603application (already incorporated herein) described advertisingtechniques that can be implemented based on detected presence, which isdescribed in the '928 application (already incorporated herein). Suchtechniques can be integrated with various techniques described herein aspart of the method 200 for implementing distributed infrastructure forcloud computing and/or cloud-based data storage. For instance, thesystem (e.g., the control server, the user device, etc.) might obtainrelevant advertising material as described in the '603 application anddisplay such advertising over content obtained and delivered using thetechniques of the method 200, where the advertising might be part of thecontent that is part of the distributed data storage functionality. Insome cases, the determination of the relevant advertising material foreach target subscriber might be determined as part of the distributedprocessing functionality that first gathers and then analyzes datapertaining to the subscriber's interests. Based on this disclosure, theskilled reader will understand that such techniques can be combined in anumber of different ways.

FIG. 3 illustrates a functional diagram of a system 300 for controllingone or more user devices 305 (which can be considered a type of userdevice 105). The skilled reader should note that the arrangement of thecomponents illustrated in FIG. 3 is functional in nature, and thatvarious embodiments can employ a variety of different structuralarchitectures. Merely by way of example, one exemplary, generalizedarchitecture for the system 300 is described below with respect to FIG.5, but any number of suitable hardware arrangements can be employed inaccordance with different embodiments.

In FIG. 3, first user device 305 might correspond to user device 105, asdescribed in detail above with respect to FIG. 1, while second userdevice 345 might correspond to a user device, including, withoutlimitation, a mobile phone, a smart phone, a laptop computer, a desktopcomputer, a portable gaming device, a portable media player, and/or thelike. Control server 310, network 315, and cloud storage system 330, inthe example of FIG. 3, might correspond to control server 110, network115, and cloud storage system 130, respectively, as described in detailabove with respect to FIG. 1.

System 300 might further comprise a local content source 335 (e.g., alocal content source as described above), a display device 340(including, without limitation, a television (“TV”)), andhigh-definition (“HD”) data cables 350 (or any other suitable datatransmission media). In some cases, the HD data cables 350 mightinclude, without limitation, high-definition multimedia interface(“HDMI”) cables or any other suitable HD data cables. One or more of thefirst user devices 305, as shown in FIG. 3, might be configured toprovide pass-through audio and/or video from a local content source 335to a display device 340 (e.g., using data cables 350). Merely by way ofexample, in some embodiments, a HD data input port (e.g., a HDMI inputport) in the first user device 305 allows HD signals to be input fromthe corresponding local content source 335, and a HD data output port(e.g., a HDMI output port) in the first user device 305 allows HDsignals to be output from the first user device 305 to the correspondingdisplay device 340 (e.g., TV, which might include, but is not limitedto, an Internet Protocol TV (“IPTV”), a HDTV, a cable TV, or the like).The output HD signal may, in some cases, be the input HD signal modifiedby the first user device 305. Local content source 335 might be anysuitable local content source. As noted above, a local content sourcecan be any device that provides an audio or video stream to a displaydevice and thus can include, without limitation, a cable or satelliteset-top box (“STB”), an Internet Protocol television (“IPTV”) STB,devices that generate video and/or audio, and/or acquire video and/oraudio from other sources, such as the Internet, and provide thatvideo/audio to a display device; hence a local content source caninclude devices such as a video game console, a Roku® streaming mediaplayer, an AppleTV®, and/or the like. Hence, when situated functionallyinline between a local content source and a display device, the userdevice can receive an audiovisual stream output from the local contentsource, modify that audiovisual stream in accordance with the methodsdescribed in the '182 patent, and provide the (perhaps modified)audiovisual stream as input to the display device 340. In someembodiments, first user device 305 a, local content source 335 a,display device 340 a, and second user device 345 a (if any) might belocated at a first customer premises 360 a, while first user device 305b, local content source 335 b, display device 340 b, and second userdevice 345 b (if any) might be located at a second customer premises 360b.

According to some embodiments, system 300 might further comprise one ormore access points (not shown), each of which might be located inproximity to or in the first customer premises 360 a and/or the secondcustomer premises 360 b. The access point(s) can allow wirelesscommunication between each first user device 305 and network 315. (Ofcourse, a first user device 305 might also have a wired connection to anaccess point, router, residential gateway, etc., such as via an Ethernetcable, which can provide similar communication functionality.) In somecases (as shown), each first user device 305 might be communicativelycoupled to network 315 (via either wired or wireless connection),without routing through any access points. In some cases, wired orwireless access to network 315 allows first user device 305 to obtainprofiles from cloud storage system 330 and/or media content from contentserver 370 and media content database 375 independent of thecorresponding local content source 335, which is in communication with atelevision (“TV”) distribution network 365 (either via wirelessconnection or via wired connection). In some cases (not shown), TVdistribution network 365 (which could be, for example, a cabletelevision distribution network, a satellite television distributionnetwork, an Internet Protocol television (“IPTV”) distribution network,and/or the like) might be communicatively coupled with content server370, and thus local content source 335 might obtain media content fromcontent server 370 and media content database 375 independently of firstuser device 305. Alternatively or in addition, the televisiondistribution network 365 might be communicatively coupled to othercontent servers and/or other media content sources (not shown).

In this manner, first user device 305 can overlay the input signal fromthe corresponding local content source 335 with additional media contentto produce an augmented output HD signal to the corresponding displaydevice 340 via data cables 350. This functionality allows forsupplemental content (which may be associated with the media contentaccessed by the local content source 335 for display on display device340) to be accessed and presented using the first user device 305, insome cases, as a combined presentation on the display device 340, whichmay be one of an overlay arrangement (e.g., a picture-in-picture (“PIP”)display, with the supplemental content overlaid on the main content), asplit screen arrangement (with the supplemental content adjacent to, butnot obscuring any portion of the main content), a passive banner stream(with non-interactive supplemental content streaming in a banner(s)along one or more of a top, bottom, left, or right edge of a displayfield in which the main content is displayed on display device 340),and/or an interactive banner stream (with interactive supplementalcontent streaming in a banner(s) along one or more of a top, bottom,left, or right edge of a display field in which the main content isdisplayed on display device 340). Herein, examples of interactivesupplemental content might include, without limitation, content thatwhen streamed in a banner can be caused to slow, stop, and/or replaywithin the banner, in response to user interaction with the contentand/or the banner (as opposed to passive banner streaming, in whichinformation is streamed in a manner uncontrollable by the user). Theinteractive supplemental content that is streamed in the banner may, insome instances, also allow the user to invoke operations or functions byinteracting therewith; for example, by the user highlighting and/orselecting the supplemental content (e.g., an icon or still photograph ofa character, actor/actress, scene, etc. associated with the maincontent), links for related webpages, links to further content stored inmedia content database 375, or operations to display related content ondisplay device 340 and/or second user device 345 may be invoked.

System 300 might otherwise function in a similar manner as describedabove with respect to system 100 and method 200 in terms of theimplementation of distributed infrastructure for cloud computing,cloud-based application hosting, and/or cloud-based data storage.

FIG. 4 provides a schematic illustration of one embodiment of a computersystem 400 that can perform the methods provided by various otherembodiments, as described herein, and/or can function as a user device,control server, web server, and/or the like. It should be noted thatFIG. 4 is meant only to provide a generalized illustration of variouscomponents, of which one or more (or none) of each may be utilized asappropriate. FIG. 4, therefore, broadly illustrates how individualsystem elements may be implemented in a relatively separated orrelatively more integrated manner.

The computer system 400 is shown comprising hardware elements that canbe electrically coupled via a bus 405 (or may otherwise be incommunication, as appropriate). The hardware elements may include one ormore processors 410, including without limitation one or moregeneral-purpose processors and/or one or more special-purpose processors(such as digital signal processing chips, graphics accelerationprocessors, and/or the like); one or more input devices 415, which caninclude without limitation a mouse, a keyboard and/or the like; and oneor more output devices 420, which can include without limitation adisplay device, a printer and/or the like.

The computer system 400 may further include (and/or be in communicationwith) one or more storage devices 425, which can comprise, withoutlimitation, local and/or network accessible storage, and/or can include,without limitation, a disk drive, a drive array, an optical storagedevice, solid-state storage device such as a random access memory(“RAM”) and/or a read-only memory (“ROM”), which can be programmable,flash-updateable and/or the like. Such storage devices may be configuredto implement any appropriate data stores, including without limitation,various file systems, database structures, and/or the like.

The computer system 400 might also include a communications subsystem430, which can include without limitation a modem, a network card(wireless or wired), an infra-red communication device, a wirelesscommunication device and/or chipset (such as a Bluetooth™ device, an802.11 device, a WiFi device, a WiMax device, a WWAN device, cellularcommunication facilities, etc.), and/or the like. The communicationssubsystem 430 may permit data to be exchanged with a network (such asthe network described below, to name one example), with other computersystems, and/or with any other devices described herein. In manyembodiments, the computer system 400 will further comprise a workingmemory 435, which can include a RAM or ROM device, as described above.

The computer system 400 also may comprise software elements, shown asbeing currently located within the working memory 435, including anoperating system 440, device drivers, executable libraries, and/or othercode, such as one or more application programs 445, which may comprisecomputer programs provided by various embodiments, and/or may bedesigned to implement methods, and/or configure systems, provided byother embodiments, as described herein. Merely by way of example, one ormore procedures described with respect to the method(s) discussed abovemight be implemented as code and/or instructions executable by acomputer (and/or a processor within a computer); in an aspect, then,such code and/or instructions can be used to configure and/or adapt ageneral purpose computer (or other device) to perform one or moreoperations in accordance with the described methods.

A set of these instructions and/or code might be encoded and/or storedon a non-transitory computer readable storage medium, such as thestorage device(s) 425 described above. In some cases, the storage mediummight be incorporated within a computer system, such as the system 400.In other embodiments, the storage medium might be separate from acomputer system (i.e., a removable medium, such as a compact disc,etc.), and/or provided in an installation package, such that the storagemedium can be used to program, configure, and/or adapt a general purposecomputer with the instructions/code stored thereon. These instructionsmight take the form of executable code, which is executable by thecomputer system 400 and/or might take the form of source and/orinstallable code, which, upon compilation and/or installation on thecomputer system 400 (e.g., using any of a variety of generally availablecompilers, installation programs, compression/decompression utilities,etc.) then takes the form of executable code.

It will be apparent to those skilled in the art that substantialvariations may be made in accordance with specific requirements. Forexample, customized hardware (such as programmable logic controllers,field-programmable gate arrays, application-specific integratedcircuits, and/or the like) might also be used, and/or particularelements might be implemented in hardware, software (including portablesoftware, such as applets, etc.), or both. Further, connection to othercomputing devices such as network input/output devices may be employed.

As mentioned above, in one aspect, some embodiments may employ acomputer system (such as the computer system 400) to perform methods inaccordance with various embodiments of the invention. According to a setof embodiments, some or all of the procedures of such methods areperformed by the computer system 400 in response to processor 410executing one or more sequences of one or more instructions (which mightbe incorporated into the operating system 440 and/or other code, such asan application program 445) contained in the working memory 435. Suchinstructions may be read into the working memory 435 from anothercomputer readable medium, such as one or more of the storage device(s)425. Merely by way of example, execution of the sequences ofinstructions contained in the working memory 435 might cause theprocessor(s) 410 to perform one or more procedures of the methodsdescribed herein.

According to some embodiments, system 400 might further comprise one ormore sensors 450, which might include, without limitation, one or morecameras, one or more IR sensors, and/or one or more 3D sensors, or thelike. In some cases, the one or more sensors 450 might be incorporatedin (or might otherwise be one of) the input device(s) 415. The outputdevice(s) 420 might, in some embodiments, further include one or moremonitors, one or more TVs, and/or one or more display screens, or thelike.

The terms “machine readable medium” and “computer readable medium,” asused herein, refer to any medium that participates in providing datathat causes a machine to operate in a specific fashion. In an embodimentimplemented using the computer system 400, various computer readablemedia might be involved in providing instructions/code to processor(s)410 for execution and/or might be used to store and/or carry suchinstructions/code (e.g., as signals). In many implementations, acomputer readable medium is a non-transitory, physical, and/or tangiblestorage medium. Such a medium may take many forms, including but notlimited to, non-volatile media, volatile media, and transmission media.Non-volatile media includes, for example, optical and/or magnetic disks,such as the storage device(s) 425. Volatile media includes, withoutlimitation, dynamic memory, such as the working memory 435. Transmissionmedia includes, without limitation, coaxial cables, copper wire andfiber optics, including the wires that comprise the bus 405, as well asthe various components of the communication subsystem 430 (and/or themedia by which the communications subsystem 430 provides communicationwith other devices). Hence, transmission media can also take the form ofwaves (including without limitation radio, acoustic and/or light waves,such as those generated during radio-wave and infra-red datacommunications).

Common forms of physical and/or tangible computer readable mediainclude, for example, a floppy disk, a flexible disk, a hard disk,magnetic tape, or any other magnetic medium, a CD-ROM, any other opticalmedium, punch cards, paper tape, any other physical medium with patternsof holes, a RAM, a PROM, an EPROM, a FLASH-EPROM, any other memory chipor cartridge, a carrier wave as described hereinafter, or any othermedium from which a computer can read instructions and/or code.

Various forms of computer readable media may be involved in carrying oneor more sequences of one or more instructions to the processor(s) 410for execution. Merely by way of example, the instructions may initiallybe carried on a magnetic disk and/or optical disc of a remote computer.A remote computer might load the instructions into its dynamic memoryand send the instructions as signals over a transmission medium to bereceived and/or executed by the computer system 400. These signals,which might be in the form of electromagnetic signals, acoustic signals,optical signals, and/or the like, are all examples of carrier waves onwhich instructions can be encoded, in accordance with variousembodiments of the invention.

The communications subsystem 430 (and/or components thereof) generallywill receive the signals, and the bus 405 then might carry the signals(and/or the data, instructions, etc. carried by the signals) to theworking memory 435, from which the processor(s) 405 retrieves andexecutes the instructions. The instructions received by the workingmemory 435 may optionally be stored on a storage device 425 eitherbefore or after execution by the processor(s) 410.

As noted above, a set of embodiments comprises systems collectingpresence information and/or delivering information (including, withoutlimitation, profiles and/or content) to a user on a user device, basedon presence information, regardless of whether the user device is ownedby and/or associated with the user. FIG. 5 illustrates a schematicdiagram of a system 500 that can be used in accordance with one set ofembodiments. The system 500 can include one or more user computers 505.In particular, a user computer 505 can be a user device (such as userdevice 105, 305, or 345), as described above. More generally, a usercomputer 505 can be a general purpose personal computer (including,merely by way of example, desktop computers, workstations, tabletcomputers, laptop computers, handheld computers, mobile phones, smartphones, and the like), running any appropriate operating system, severalof which are available from vendors such as Apple, Microsoft Corp., aswell as a variety of commercially-available UNIX™ or UNIX-like operatingsystems. A user computer 505 can also have any of a variety ofapplications, including one or more applications configured to performmethods provided by various embodiments (as described above, forexample), as well as one or more office applications, database clientand/or server applications, and/or web browser applications.Alternatively, a user computer 505 can be any other electronic device,such as a thin-client computer, Internet-enabled mobile telephone,and/or personal digital assistant, capable of communicating via anetwork (e.g., the network 510 described below) and/or of displaying andnavigating web pages or other types of electronic documents. Althoughthe exemplary system 500 is shown with two user computers 505, anynumber of user computers can be supported.

Certain embodiments operate in a networked environment, which caninclude a network 510. The network 510 can be any type of networkfamiliar to those skilled in the art that can support datacommunications using any of a variety of commercially-available (and/orfree or proprietary) protocols, including without limitation TCP/IP,SNA™, IPX™, AppleTalk™, and the like. Merely by way of example, thenetwork 510 can include a local area network (“LAN”), including withoutlimitation a fiber network, an Ethernet network, a Token-Ring™ networkand/or the like; a wide-area network; a wireless wide area network(“WWAN”); a virtual network, such as a virtual private network (“VPN”);the Internet; an intranet; an extranet; a public switched telephonenetwork (“PSTN”); an infra-red network; a wireless network, includingwithout limitation a network operating under any of the IEEE 802.11suite of protocols, the Bluetooth™ protocol known in the art, and/or anyother wireless protocol; and/or any combination of these and/or othernetworks.

Embodiments can also include one or more server computers 515. Each ofthe server computers 515 may be configured with an operating system,including without limitation any of those discussed above with respectto the user computers 505, as well as any commercially (or freely)available server operating systems. Each of the servers 515 may also berunning one or more applications, which can be configured to provideservices to one or more clients 505 and/or other servers 515.

Merely by way of example, one of the servers 515 might be a controlserver, with the functionality described above. In another embodiment,one of the servers might be a web server, which can be used, merely byway of example, to provide communication between a user computer 505 anda control server, for example, to process requests for web pages orother electronic documents from user computers 505 and/or to provideuser input to the control server. The web server can also run a varietyof server applications, including HTTP servers, FTP servers, CGIservers, database servers, Java servers, and the like. In someembodiments of the invention, the web server may be configured to serveweb pages that can be operated within a web browser on one or more ofthe user computers 505 to perform operations in accordance with methodsprovided by various embodiments.

The server computers 515, in some embodiments, might include one or moreapplication servers, which can be configured with one or moreapplications accessible by a client running on one or more of the clientcomputers 505 and/or other servers 515. Merely by way of example, theserver(s) 515 can be one or more general purpose computers capable ofexecuting programs or scripts in response to the user computers 505and/or other servers 515, including without limitation web applications(which might, in some cases, be configured to perform methods providedby various embodiments). Merely by way of example, a web application canbe implemented as one or more scripts or programs written in anysuitable programming language, such as Java™, C, C#™ or C++, and/or anyscripting language, such as Perl, Python, or TCL, as well ascombinations of any programming and/or scripting languages. Theapplication server(s) can also include database servers, includingwithout limitation those commercially available from Oracle™,Microsoft™, Sybase™, IBM™ and the like, which can process requests fromclients (including, depending on the configuration, dedicated databaseclients, API clients, web browsers, etc.) running on a user computer 505and/or another server 515. In some embodiments, an application servercan create web pages dynamically for displaying the information inaccordance with various embodiments, such as providing a user interfacefor a control server, as described above. Data provided by anapplication server may be formatted as one or more web pages (comprisingHTML, JavaScript, etc., for example) and/or may be forwarded to a usercomputer 505 via a web server (as described above, for example).Similarly, a web server might receive web page requests and/or inputdata from a user computer 505 and/or forward the web page requestsand/or input data to an application server. In some cases, a web servermay be integrated with an application server.

In accordance with further embodiments, one or more servers 515 canfunction as a file server and/or can include one or more of the files(e.g., application code, data files, etc.) necessary to implementvarious disclosed methods, incorporated by an application running on auser computer 505 and/or another server 515. Alternatively, as thoseskilled in the art will appreciate, a file server can include allnecessary files, allowing such an application to be invoked remotely bya user computer 505 and/or server 515.

It should be noted that the functions described with respect to variousservers herein (e.g., application server, database server, web server,file server, etc.) can be performed by a single server and/or aplurality of specialized servers, depending on implementation-specificneeds and parameters. Further, as noted above, the functionality of oneor more servers 515 might be implemented by one or more containers orvirtual machines operating in a cloud environment and/or a distributed,cloud-like environment based on shared resources of a plurality of userdevices.

In certain embodiments, the system can include one or more data stores520. The nature and location of the data stores 520 is discretionary:merely by way of example, one data store 520 might comprise a database520 a that stores information about master accounts, assigned userdevices, etc. Alternatively and/or additionally, a data store 520 bmight be a cloud storage environment for storing uploaded images and/orvideo. As the skilled reader can appreciate, the database 520 a and thecloud storage environment 520 b might be collocated and/or separate fromone another. Some or all of the data stores 520 might reside on astorage medium local to (and/or resident in) a server 515 a. Conversely,any of the data stores 520 (and especially the cloud storage environment520 b) might be remote from any or all of the computers 505, 515, solong as it can be in communication (e.g., via the network 510) with oneor more of these. In a particular set of embodiments, a database 520 acan reside in a storage-area network (“SAN”) familiar to those skilledin the art, and/or the cloud storage environment 520 b might compriseone or more SANs. (Likewise, any necessary files for performing thefunctions attributed to the computers 505, 515 can be stored locally onthe respective computer and/or remotely, as appropriate.) In one set ofembodiments, the database 520 a can be a relational database, such as anOracle database, that is adapted to store, update, and retrieve data inresponse to SQL-formatted commands. The database might be controlledand/or maintained by a database server, as described above, for example.

As noted above, the system can also include one or more user devices 525(which might include user device 105 or 305, for example). Although onlytwo such devices are illustrated in FIG. 5, it should be appreciatedthat any number of user devices 525 can be controlled in accordance withvarious embodiments. Using the techniques described herein, a controlserver 515 can control the operation of the user device(s) 525 e.g., byperforming operations in accordance with the methods described above.The one or more user devices 525 may also be established as distributedinfrastructure elements for cloud computing, cloud-based applicationhosting, and/or cloud-based data storage, in accordance with the variousembodiments described in detail above. The one or more user devices 525might also serve the one or more functions of server 515 and/or database520, as described in detail above.

While certain features and aspects have been described with respect toexemplary embodiments, one skilled in the art will recognize thatnumerous modifications are possible. For example, the methods andprocesses described herein may be implemented using hardware components,software components, and/or any combination thereof. Further, whilevarious methods and processes described herein may be described withrespect to particular structural and/or functional components for easeof description, methods provided by various embodiments are not limitedto any particular structural and/or functional architecture but insteadcan be implemented on any suitable hardware, firmware, and/or softwareconfiguration. Similarly, while certain functionality is ascribed tocertain system components, unless the context dictates otherwise, thisfunctionality can be distributed among various other system componentsin accordance with the several embodiments.

Moreover, while the procedures of the methods and processes describedherein are described in a particular order for ease of description,unless the context dictates otherwise, various procedures may bereordered, added, and/or omitted in accordance with various embodiments.Moreover, the procedures described with respect to one method or processmay be incorporated within other described methods or processes;likewise, system components described according to a particularstructural architecture and/or with respect to one system may beorganized in alternative structural architectures and/or incorporatedwithin other described systems. Hence, while various embodiments aredescribed with—or without—certain features for ease of description andto illustrate exemplary aspects of those embodiments, the variouscomponents and/or features described herein with respect to a particularembodiment can be substituted, added, and/or subtracted from among otherdescribed embodiments, unless the context dictates otherwise.Consequently, although several exemplary embodiments are describedabove, it will be appreciated that the invention is intended to coverall modifications and equivalents within the scope of the followingclaims.

What is claimed is:
 1. A method, comprising: communicatively coupling aplurality of user devices together in a network, each of the pluralityof user devices being located in one of a plurality of customerpremises, and each user device comprising: a video input interface toreceive video input from a local content source; an audio inputinterface to receive audio input from the local content source; a videooutput interface to provide video output to a video display device; anaudio output interface to provide audio output to an audio receiver; avideo capture device to capture at least one of image data or videodata; an audio capture device to capture audio data; a networkinterface; at least one processor; and a storage medium in communicationwith the at least one processor; establishing, with a computer, one ormore user devices of the plurality of user devices as distributedinfrastructure elements; and providing, with the computer, at least oneof one or more software applications, customer data, or media content tothe one or more user devices for hosting on the one or more userdevices.
 2. The method of claim 1, wherein each of the plurality of userdevices adheres to one of a limited number of classes of hardware, eachclass of hardware having a known, common hardware configuration, themethod further comprising: determining, with the computer, a class ofeach of the plurality of user devices; and determining, with thecomputer, capabilities of each user device, based on the determinedclass of each user device; wherein providing the at least one of one ormore software applications, customer data, or media content to the oneor more user devices comprises providing the least one of one or moresoftware applications, customer data, or media content to the one ormore user devices based at least in part on the determined capabilitiesof each user device.
 3. The method of claim 1, wherein the computer isat least one of the plurality of user devices.
 4. The method of claim 3,wherein the computer is at least one of the one or more user devicesthat are established as distributed infrastructure elements.
 5. Themethod of claim 1, wherein the computer is a control server incommunication with the plurality of user devices over the network. 6.The method of claim 1, further comprising: determining, with thecomputer, a redundancy level for hosting each of the at least one of theone or more software applications, the customer data, or the mediacontent across the one or more user devices.
 7. The method of claim 6,wherein providing the at least one of one or more software applications,customer data, or media content to the one or more user devices forhosting on the one or more user devices comprises providing, with thecomputer, the at least one of one or more software applications,customer data, or media content to the one or more user devices, basedat least in part on the determined redundancy level for hosting each ofthe at least one of the one or more software applications, the customerdata, or the media content across the one or more user devices.
 8. Themethod of claim 1, further comprising: collecting, with the computer,resource usage information for each of the one or more user devices; andcollecting, with the computer, network connectivity information for eachof the one or more user devices.
 9. The method of claim 8, furthercomprising: determining, with the computer, suitability of each of theone or more user devices to host the at least one of one or moresoftware applications, customer data, or media content, based at leastin part on one or more of the collected resource usage information orthe collected network connectivity information.
 10. The method of claim1, further comprising: receiving, with the computer, user input from auser among a plurality of users indicating what type of softwareapplications, customer data, or media content are permitted to be hostedon a user device owned by the user; receiving, with the computer, userinput from the user indicating at least one of a level of processingpower or a level of storage on the user device owned by the user that ispermitted for hosting the indicated type of software applications,customer data, or media content; labelling, with the computer, each ofthe one or more user devices with at least one of a first label or asecond label, wherein the first label indicates type of distributedhosting, based on the indicated type of software applications, customerdata, or media content, and wherein the second label indicates capacityof distributed hosting, based on the at least one of the indicated levelof processing power or the indicated level of storage.
 11. The method ofclaim 10, further comprising: determining, with the computer,suitability of each of the one or more user devices to host the at leastone of one or more software applications, customer data, or mediacontent, based at least in part on one or more of the first label or thesecond label.
 12. The method of claim 11, wherein providing the at leastone of one or more software applications, customer data, or mediacontent to the one or more user devices for hosting on the one or moreuser devices comprises providing, with the computer, the at least one ofone or more software applications, customer data, or media content tothe one or more user devices, based at least in part on at least one ofthe first label, the second label, or the determined suitability of eachof the one or more user devices to host the at least one of one or moresoftware applications, customer data, or media content.
 13. The methodof claim 1, wherein establishing the one or more user devices of theplurality of user devices as distributed infrastructure elementscomprises installing, with the computer, software on at least two userdevices of the one or more user devices to enable distributed processingof software applications across the at least two user devices.
 14. Themethod of claim 1, wherein establishing the one or more user devices ofthe plurality of user devices as distributed infrastructure elementscomprises installing, with the computer, software on at least two userdevices of the one or more user devices to enable hosting of softwareapplications across the at least two user devices.
 15. The method ofclaim 1, wherein establishing the one or more user devices of theplurality of user devices as distributed infrastructure elementscomprises installing, with the computer, software on at least two userdevices of the one or more user devices to enable distributed storage ofone or more of customer data or media content across the at least twouser devices.
 16. The method of claim 1, wherein providing the at leastone of one or more software applications, customer data, or mediacontent to the one or more user devices for hosting on the one or moreuser devices comprises providing, with the computer, mirrored copies ofthe at least one of one or more software applications, customer data, ormedia content to each of at least two user devices of the one or moreuser devices.
 17. The method of claim 1, wherein providing the at leastone of one or more software applications, customer data, or mediacontent to the one or more user devices for hosting on the one or moreuser devices comprises providing, with the computer, portions of each ofthe at least one of one or more software applications, customer data, ormedia content to each of at least two user devices of the one or moreuser devices.
 18. The method of claim 1, further comprising: monitoring,with the computer, one or more of performance of at least one userdevice of the one or more user devices, or performance of thedistributed infrastructure elements, as a whole.
 19. The method of claim18, further comprising: determining, with the computer, one or morecourses of action to invoke, based at least in part on one or more ofperformance metrics of the at least one user device, or performancemetrics of the distributed infrastructure elements, as a whole; andinvoking, with the computer, the one or more courses of action, based onsaid determination.
 20. The method of claim 1, further comprising:monitoring, with the computer, usage of a user device owned by a user,among the one or more user devices, as a distributed infrastructureelement, over a first period; and determining, with the computer,compensation to the user for use of the user device owned by the user asa distributed infrastructure element, over the first period.
 21. Themethod of claim 1, further comprising: receiving, with the computer,sensor input collected by one or more of the user devices established asdistributed infrastructure elements.
 22. A user device among a pluralityof user devices, comprising: a video input interface to receive videoinput from a local content source; an audio input interface to receiveaudio input from the local content source; a video output interface toprovide video output to a video display device; an audio outputinterface to provide audio output to an audio receiver; a video capturedevice to capture at least one of image data or video data; an audiocapture device to capture audio data; a network interface; at least oneprocessor; and a storage medium in communication with the at least oneprocessor, the storage medium having encoded thereon a set ofinstructions executable by the at least one processor to controloperation of the user device, the set of instructions comprising:instructions to establish one or more other user devices of theplurality of user devices as distributed infrastructure elements; andinstructions to provide at least one of one or more softwareapplications, customer data, or media content to the one or more otheruser devices for hosting on the one or more other user devices.
 23. Theuser device of claim 22, wherein the network interface is configured tocommunicate with at least one other user device among the one or moreuser devices over a network.
 24. A user device, comprising: a videoinput interface to receive video input from a local content source; anaudio input interface to receive audio input from the local contentsource; a video output interface to provide video output to a videodisplay device; an audio output interface to provide audio output to anaudio receiver; a video capture device to capture at least one of imagedata or video data; an audio capture device to capture audio data; anetwork interface; at least one processor; and a storage medium incommunication with the at least one processor, the storage medium havingencoded thereon a set of instructions executable by the at least oneprocessor to control operation of the user device, the set ofinstructions comprising: instructions to receive, from a computer,instructions to reconfigure to become a distributed infrastructureelement of a distributed infrastructure; instructions to reconfigureinto a distributed infrastructure element, based on the instructionsreceived from the computer; instructions to receive at least one of oneor more software applications, customer data, or media content providedfrom the computer; and instructions to host the at least one of one ormore software applications, customer data, or media content within thedistributed infrastructure.
 25. The user device of claim 24, wherein thenetwork interface is configured to communicate with the computer and atleast one other user device among one or more user devices over anetwork.
 26. A system, comprising: a computer, comprising: at least onefirst processor; and a first storage medium in communication with the atleast one first processor, the first storage medium having encodedthereon a first set of instructions executable by the at least one firstprocessor to control operation of one or more user devices of aplurality of user devices, the first set of instructions comprising:instructions to establish the one or more user devices as distributedinfrastructure elements; and instructions to provide at least one of oneor more software applications, customer data, or media content to theone or more user devices for hosting on the one or more user devices;and the one or more user devices, each comprising: a video inputinterface to receive video input from a local content source; an audioinput interface to receive audio input from the local content source; avideo output interface to provide video output to a video displaydevice; an audio output interface to provide audio output to an audioreceiver; a video capture device to capture at least one of image dataor video data; an audio capture device to capture audio data; a networkinterface; at least one second processor; and a second storage medium incommunication with the at least one second processor, the second storagemedium having encoded thereon a second set of instructions executable bythe at least one second processor to control operation of the userdevice, the second set of instructions comprising: instructions toreceive, from the computer, instructions to reconfigure to become adistributed infrastructure element of a distributed infrastructure;instructions to reconfigure into a distributed infrastructure element,based on the instructions received from the computer; instructions toreceive the at least one of one or more software applications, customerdata, or media content provided from the computer; and instructions tohost the at least one of one or more software applications, customerdata, or media content within the distributed infrastructure.
 27. Thesystem of claim 26, wherein the computer is at least one of theplurality of user devices.
 28. The system of claim 27, wherein thecomputer is at least one of the one or more user devices that areestablished as distributed infrastructure elements.
 29. The system ofclaim 26, wherein the computer is a control server in communication withthe one or more user devices over a network.
 30. The system of claim 26,wherein the network interface is configured to communicate with at leastone of the computer over a network or at least one other user deviceamong the one or more user devices over the network.